snowflake-ml-python 1.52.0__tar.gz → 1.53.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.52.0 → snowflake_ml_python-1.53.0}/CHANGELOG.md +41 -4
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/PKG-INFO +42 -5
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/exceptions.py +8 -2
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/platform_capabilities.py +17 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/feature_store.py +145 -5
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/feature_view.py +29 -9
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/online_service.py +6 -1
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/__init__.py +3 -0
- snowflake_ml_python-1.53.0/snowflake/ml/jobs/_interop/results.py +99 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/constants.py +8 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/payload_utils.py +1 -1
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +5 -21
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/job.py +297 -2
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/job_definition.py +38 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/manager.py +15 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/model_version_impl.py +2 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/ops/model_ops.py +26 -5
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/sql/model_version.py +10 -2
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/sql/service.py +10 -2
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +4 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +2 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +6 -1
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +6 -1
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +31 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake_ml_python.egg-info/PKG-INFO +42 -5
- snowflake_ml_python-1.52.0/snowflake/ml/jobs/_interop/results.py +0 -51
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/README.md +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/pyproject.toml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/tee.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/_internal/utils/url.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/_source_info.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/_compute_fn_validation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/aggregation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/feature.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/feature_group.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/feature_view_append_only_validation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/feature_view_refresh_freq.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/metadata_manager.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/realtime_config.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/realtime_dataset.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/realtime_dataset_udf.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/realtime_registration.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/request_source.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/spec/builder.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/spec/models.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/spec/table_schema_evolution.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/stream_config.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/stream_source.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/streaming_registration.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/tile_sql_generator.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/type_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/batch_inference_job_specs.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/batch_inference_task.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/batch_inference_task_v2.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/ops/live_commit_naming.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/ops/service_ops.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/service/inference_job_service_spec.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/huggingface_lazy_uploader.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_meta/model_sample_input_data.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_save_options.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/batch/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/batch_inference/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/code_path.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/compute_pool.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/models/huggingface.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/openai_signatures.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/type_hints.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/model/volatility.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/utils/stage_file.py +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake_ml_python.egg-info/SOURCES.txt +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake_ml_python.egg-info/requires.txt +0 -0
- {snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,43 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.53.0
|
|
4
|
+
|
|
5
|
+
### New Features
|
|
6
|
+
|
|
7
|
+
* ML Jobs: `submit_file`, `submit_directory`, and `submit_from_stage` accept a `parallel` kwarg (default `False`).
|
|
8
|
+
With `parallel=True`, the entrypoint is executed directly on every instance with the job topology injected into the
|
|
9
|
+
environment (`SNOWFLAKE_JOB_INDEX`, `SNOWFLAKE_JOBS_COUNT`, `MLRS_HEAD_IP`, `MLRS_RDZV_PORT`, `MLRS_NODE_IPS`).
|
|
10
|
+
Not supported for callable (`@remote`) payloads.
|
|
11
|
+
|
|
12
|
+
* ML Jobs: added `MLJob.distributed_result()`, the result API for distributed (e.g. `parallel=True`) jobs, which
|
|
13
|
+
have no single head result. On full success it returns a `DistributedResult` (`success`, per-instance `exit_codes`,
|
|
14
|
+
`failed_instance`, and instance 0's `return_value`); if any instance failed it raises `DistributedJobError`, which
|
|
15
|
+
carries that `DistributedResult` as `.result` and the earliest-failing instance's reconstructed exception as its
|
|
16
|
+
cause. `DistributedResult` and `DistributedJobError` are exported from `snowflake.ml.jobs`.
|
|
17
|
+
|
|
18
|
+
* ML Jobs: `submit_file`, `submit_directory`, and `submit_from_stage` accept a `preflight` kwarg, supported only
|
|
19
|
+
together with `parallel=True`. It takes the name of a check level, run on every instance before the entrypoint:
|
|
20
|
+
`"wiring"` checks the rendezvous plus a small collective, and `"reference"` additionally times a short synthetic
|
|
21
|
+
DDP step and reports its step times from instance 0. If a requested check fails, the job aborts without running
|
|
22
|
+
the entrypoint and the failure surfaces through `distributed_result()`. A check that does not apply to the job
|
|
23
|
+
(`"reference"` on a CPU pool or a single instance) is reported as skipped and the job continues. Covers only the
|
|
24
|
+
PyTorch c10d rendezvous backend.
|
|
25
|
+
|
|
26
|
+
* Feature Store: Iceberg-backed feature views can enable online storage when using the Postgres online store
|
|
27
|
+
(`OnlineConfig(store_type=OnlineStoreType.POSTGRES)`). Online storage with Iceberg remains unsupported for
|
|
28
|
+
other store types.
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
### Behavior Changes
|
|
33
|
+
|
|
34
|
+
* Feature Store: `register_feature_view` now records `FV_SOURCE_REFS` metadata for managed batch
|
|
35
|
+
feature views (derived from the `feature_df` schema) when the caller does not supply
|
|
36
|
+
`source_refs`. Streaming and realtime feature views are unaffected.
|
|
37
|
+
|
|
38
|
+
### Deprecations
|
|
39
|
+
|
|
40
|
+
## 1.52.0 (2026-08-20)
|
|
4
41
|
|
|
5
42
|
### New Features
|
|
6
43
|
|
|
@@ -8,6 +45,9 @@
|
|
|
8
45
|
|
|
9
46
|
### Behavior Changes
|
|
10
47
|
|
|
48
|
+
* Feature Store: `stream_ingest` now reuses the Online Service ingest endpoint cached on the
|
|
49
|
+
`StreamSource` by `get_stream_source`, avoiding a per-call server status round-trip.
|
|
50
|
+
|
|
11
51
|
### Deprecations
|
|
12
52
|
|
|
13
53
|
## 1.51.0 (2026-08-12)
|
|
@@ -26,9 +66,6 @@
|
|
|
26
66
|
|
|
27
67
|
### Behavior Changes
|
|
28
68
|
|
|
29
|
-
* Feature Store: `stream_ingest` now reuses the Online Service ingest endpoint cached on the
|
|
30
|
-
`StreamSource` by `get_stream_source`, avoiding a per-call server status round-trip.
|
|
31
|
-
|
|
32
69
|
### Deprecations
|
|
33
70
|
|
|
34
71
|
## 1.50.0 (2026-08-03)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.53.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,7 +416,44 @@ 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.
|
|
419
|
+
## 1.53.0
|
|
420
|
+
|
|
421
|
+
### New Features
|
|
422
|
+
|
|
423
|
+
* ML Jobs: `submit_file`, `submit_directory`, and `submit_from_stage` accept a `parallel` kwarg (default `False`).
|
|
424
|
+
With `parallel=True`, the entrypoint is executed directly on every instance with the job topology injected into the
|
|
425
|
+
environment (`SNOWFLAKE_JOB_INDEX`, `SNOWFLAKE_JOBS_COUNT`, `MLRS_HEAD_IP`, `MLRS_RDZV_PORT`, `MLRS_NODE_IPS`).
|
|
426
|
+
Not supported for callable (`@remote`) payloads.
|
|
427
|
+
|
|
428
|
+
* ML Jobs: added `MLJob.distributed_result()`, the result API for distributed (e.g. `parallel=True`) jobs, which
|
|
429
|
+
have no single head result. On full success it returns a `DistributedResult` (`success`, per-instance `exit_codes`,
|
|
430
|
+
`failed_instance`, and instance 0's `return_value`); if any instance failed it raises `DistributedJobError`, which
|
|
431
|
+
carries that `DistributedResult` as `.result` and the earliest-failing instance's reconstructed exception as its
|
|
432
|
+
cause. `DistributedResult` and `DistributedJobError` are exported from `snowflake.ml.jobs`.
|
|
433
|
+
|
|
434
|
+
* ML Jobs: `submit_file`, `submit_directory`, and `submit_from_stage` accept a `preflight` kwarg, supported only
|
|
435
|
+
together with `parallel=True`. It takes the name of a check level, run on every instance before the entrypoint:
|
|
436
|
+
`"wiring"` checks the rendezvous plus a small collective, and `"reference"` additionally times a short synthetic
|
|
437
|
+
DDP step and reports its step times from instance 0. If a requested check fails, the job aborts without running
|
|
438
|
+
the entrypoint and the failure surfaces through `distributed_result()`. A check that does not apply to the job
|
|
439
|
+
(`"reference"` on a CPU pool or a single instance) is reported as skipped and the job continues. Covers only the
|
|
440
|
+
PyTorch c10d rendezvous backend.
|
|
441
|
+
|
|
442
|
+
* Feature Store: Iceberg-backed feature views can enable online storage when using the Postgres online store
|
|
443
|
+
(`OnlineConfig(store_type=OnlineStoreType.POSTGRES)`). Online storage with Iceberg remains unsupported for
|
|
444
|
+
other store types.
|
|
445
|
+
|
|
446
|
+
### Bug Fixes
|
|
447
|
+
|
|
448
|
+
### Behavior Changes
|
|
449
|
+
|
|
450
|
+
* Feature Store: `register_feature_view` now records `FV_SOURCE_REFS` metadata for managed batch
|
|
451
|
+
feature views (derived from the `feature_df` schema) when the caller does not supply
|
|
452
|
+
`source_refs`. Streaming and realtime feature views are unaffected.
|
|
453
|
+
|
|
454
|
+
### Deprecations
|
|
455
|
+
|
|
456
|
+
## 1.52.0 (2026-08-20)
|
|
420
457
|
|
|
421
458
|
### New Features
|
|
422
459
|
|
|
@@ -424,6 +461,9 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
424
461
|
|
|
425
462
|
### Behavior Changes
|
|
426
463
|
|
|
464
|
+
* Feature Store: `stream_ingest` now reuses the Online Service ingest endpoint cached on the
|
|
465
|
+
`StreamSource` by `get_stream_source`, avoiding a per-call server status round-trip.
|
|
466
|
+
|
|
427
467
|
### Deprecations
|
|
428
468
|
|
|
429
469
|
## 1.51.0 (2026-08-12)
|
|
@@ -442,9 +482,6 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
442
482
|
|
|
443
483
|
### Behavior Changes
|
|
444
484
|
|
|
445
|
-
* Feature Store: `stream_ingest` now reuses the Online Service ingest endpoint cached on the
|
|
446
|
-
`StreamSource` by `get_stream_source`, avoiding a per-call server status round-trip.
|
|
447
|
-
|
|
448
485
|
### Deprecations
|
|
449
486
|
|
|
450
487
|
## 1.50.0 (2026-08-03)
|
|
@@ -15,7 +15,8 @@ class SnowflakeMLException(Exception):
|
|
|
15
15
|
|
|
16
16
|
Attributes:
|
|
17
17
|
error_code: Error code.
|
|
18
|
-
original_exception: Original exception
|
|
18
|
+
original_exception: Original exception. The error code is added to its message when the exception
|
|
19
|
+
type can be constructed from a message.
|
|
19
20
|
suppress_source_trace: Suppress source stacktrace.
|
|
20
21
|
|
|
21
22
|
Raises:
|
|
@@ -34,7 +35,12 @@ class SnowflakeMLException(Exception):
|
|
|
34
35
|
raise ValueError("Must provide non-empty error_code and original_exception.")
|
|
35
36
|
|
|
36
37
|
self.error_code = error_code
|
|
37
|
-
|
|
38
|
+
try:
|
|
39
|
+
self.original_exception = type(original_exception)(f"({self.error_code}) {str(original_exception)}")
|
|
40
|
+
except Exception:
|
|
41
|
+
# Not every exception class can be rebuilt from a message alone: sqlalchemy's DBAPIError, for one,
|
|
42
|
+
# requires a statement, parameters and the driver error. Keep the original rather than masking it.
|
|
43
|
+
self.original_exception = original_exception
|
|
38
44
|
self.suppress_source_trace = suppress_source_trace
|
|
39
45
|
self._pretty_msg = repr(self.original_exception)
|
|
40
46
|
|
|
@@ -21,6 +21,8 @@ INLINE_DEPLOYMENT_SPEC_PARAMETER = "ENABLE_INLINE_DEPLOYMENT_SPEC_FROM_CLIENT_VE
|
|
|
21
21
|
SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST = "SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST"
|
|
22
22
|
ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS = "ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS"
|
|
23
23
|
ENABLE_PIP_ONLY_PACKAGING = "ENABLE_PIP_ONLY_PACKAGING"
|
|
24
|
+
ENABLE_LORA_ADAPTERS = "ENABLE_LORA_ADAPTERS"
|
|
25
|
+
ENABLE_SINGLE_OUTPUT_NATIVE_TYPE = "ENABLE_SINGLE_OUTPUT_NATIVE_TYPE"
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
class PlatformCapabilities:
|
|
@@ -87,6 +89,21 @@ class PlatformCapabilities:
|
|
|
87
89
|
def is_model_method_signature_parameters_enabled(self) -> bool:
|
|
88
90
|
return self._get_bool_feature(ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS, False)
|
|
89
91
|
|
|
92
|
+
def is_lora_adapters_enabled(self) -> bool:
|
|
93
|
+
return False
|
|
94
|
+
|
|
95
|
+
def is_single_output_native_type_enabled(self) -> bool:
|
|
96
|
+
"""Whether a single, non-OBJECT model FUNCTION output is registered with its native SQL type.
|
|
97
|
+
|
|
98
|
+
When enabled (and supported server-side), a scalar FUNCTION method with exactly one non-OBJECT output
|
|
99
|
+
is declared with that native type in the manifest and returns the value directly, instead of packing it
|
|
100
|
+
into an OBJECT. Defaults to disabled when the capability is absent (older servers).
|
|
101
|
+
|
|
102
|
+
Returns:
|
|
103
|
+
True if single-output native typing is enabled for this account; otherwise False.
|
|
104
|
+
"""
|
|
105
|
+
return self._get_bool_feature(ENABLE_SINGLE_OUTPUT_NATIVE_TYPE, False)
|
|
106
|
+
|
|
90
107
|
def is_pip_only_packaging_enabled(self) -> bool:
|
|
91
108
|
"""Whether pip-only model packaging is enabled for this account.
|
|
92
109
|
|
|
@@ -93,10 +93,12 @@ from snowflake.ml.feature_store.spec.enums import (
|
|
|
93
93
|
ENTITY_TAG_PREFIX,
|
|
94
94
|
FeatureAggregationMethod,
|
|
95
95
|
FeatureViewKind,
|
|
96
|
+
SourceType,
|
|
96
97
|
TableType,
|
|
97
98
|
)
|
|
98
99
|
from snowflake.ml.feature_store.spec.models import (
|
|
99
100
|
FeatureViewSpec,
|
|
101
|
+
_columns_from_tiled_struct_type,
|
|
100
102
|
validate_spec_oft_offline_table_schema,
|
|
101
103
|
validate_spec_oft_tiled_offline_table_schema,
|
|
102
104
|
)
|
|
@@ -178,6 +180,11 @@ def _validate_stream_ingest_record_keys(expected: list[str], row: dict[str, Any]
|
|
|
178
180
|
)
|
|
179
181
|
|
|
180
182
|
|
|
183
|
+
# Timezone names that place the session on the same time grid as UTC, so reading
|
|
184
|
+
# through them carries no tile-boundary alignment risk.
|
|
185
|
+
_UTC_TIMEZONE_NAMES = frozenset({"UTC", "ETC/UTC", "ETC/GMT", "GMT", "UCT", "UNIVERSAL", "ZULU"})
|
|
186
|
+
|
|
187
|
+
|
|
181
188
|
def _store_type_from_oft_show_row(row: Row) -> OnlineStoreType:
|
|
182
189
|
"""Map SHOW ONLINE FEATURE TABLES ``store_type`` to ``OnlineStoreType``.
|
|
183
190
|
|
|
@@ -355,6 +362,85 @@ def _initialization_warehouse_clause(feature_view: FeatureView) -> str:
|
|
|
355
362
|
return f"\n INITIALIZATION_WAREHOUSE = {iw}" if iw is not None else ""
|
|
356
363
|
|
|
357
364
|
|
|
365
|
+
def _derive_source_refs_from_feature_df(feature_view: FeatureView) -> Optional[list[dict[str, Any]]]:
|
|
366
|
+
"""Record the batch FV's raw input columns so it can be recovered as code.
|
|
367
|
+
|
|
368
|
+
Background: a feature view can be registered two ways. The declarative
|
|
369
|
+
flow authors it as YAML/spec (which names its upstream *sources* and their
|
|
370
|
+
columns), while ``register_feature_view`` registers it imperatively from a
|
|
371
|
+
Snowpark ``feature_df`` and usually names no sources at all. Later,
|
|
372
|
+
``snow feature init`` reverse-engineers deployed FVs back into that
|
|
373
|
+
declarative spec so they can be managed as code. For a tiled batch FV that
|
|
374
|
+
round-trip needs the *pre-aggregation* input schema (the columns the
|
|
375
|
+
``feature_df`` read before aggregation). That schema cannot be read back
|
|
376
|
+
from the deployed object: the backing Dynamic Table only stores the
|
|
377
|
+
post-aggregation result (renamed/aggregated columns, plus internal
|
|
378
|
+
``ArrayType`` tile columns). With nothing to compare against, recovery
|
|
379
|
+
guesses wrong, the planner sees a "changed" FV, and rebuilds it
|
|
380
|
+
(``RECREATE_FV``). This function captures the raw ``feature_df`` schema at
|
|
381
|
+
registration time and stores it as a source-ref so recovery reproduces the
|
|
382
|
+
same spec and the planner reports ``NO_CHANGE``.
|
|
383
|
+
|
|
384
|
+
What gets stored, and why each field:
|
|
385
|
+
|
|
386
|
+
- ``columns``: the whole point — the raw input schema recovery can't
|
|
387
|
+
otherwise reconstruct.
|
|
388
|
+
- ``source_type``: hard-coded to ``Batch`` because this path only runs for
|
|
389
|
+
managed batch FVs (streaming/realtime bail out above), so there is no
|
|
390
|
+
other value it could take. It is a fixed label for the stored entry, not
|
|
391
|
+
something derived from a real source object (we don't have one here).
|
|
392
|
+
- ``name``: a synthetic ``<FV>__SOURCE`` rather than the bare FV name.
|
|
393
|
+
Source names and FV names live in the same namespace during recovery, so
|
|
394
|
+
naming this after the FV would make the FV look like it depends on
|
|
395
|
+
itself.
|
|
396
|
+
- ``table``/``query`` are deliberately absent. When recovery diffs a
|
|
397
|
+
source it identifies it by its binding — ``table``, else ``query``, else
|
|
398
|
+
``name`` — never by ``columns``. That binding is recovered independently
|
|
399
|
+
from the Dynamic Table's ``FROM`` clause. This entry therefore contributes
|
|
400
|
+
only columns and carries no binding of its own, so it can never disagree
|
|
401
|
+
with (or override) the recovered one. The row is immutable once written,
|
|
402
|
+
so getting this shape right at registration time is what matters.
|
|
403
|
+
|
|
404
|
+
Best-effort: schema reads are wrapped so a failure only skips the stamp
|
|
405
|
+
(worst case, the old ``RECREATE_FV`` behavior) and never breaks
|
|
406
|
+
registration.
|
|
407
|
+
|
|
408
|
+
Args:
|
|
409
|
+
feature_view: The feature view being registered.
|
|
410
|
+
|
|
411
|
+
Returns:
|
|
412
|
+
A one-element source-ref list
|
|
413
|
+
``[{"name": "<FV>__SOURCE", "source_type": "Batch", "columns": [...]}]``
|
|
414
|
+
derived from ``feature_view.feature_df.schema``, or ``None`` when the
|
|
415
|
+
FV is not a managed batch FV, has no feature DataFrame, exposes no
|
|
416
|
+
columns, or its schema cannot be read.
|
|
417
|
+
"""
|
|
418
|
+
if feature_view.is_streaming or feature_view.is_realtime_feature_view:
|
|
419
|
+
return None
|
|
420
|
+
feature_df = feature_view.feature_df
|
|
421
|
+
if feature_df is None:
|
|
422
|
+
return None
|
|
423
|
+
try:
|
|
424
|
+
# ``_columns_from_tiled_struct_type`` (not the scalar converter) so
|
|
425
|
+
# ArrayType/Binary tile columns serialize instead of raising.
|
|
426
|
+
columns = [col.model_dump(exclude_none=True) for col in _columns_from_tiled_struct_type(feature_df.schema)]
|
|
427
|
+
except Exception:
|
|
428
|
+
# Never let best-effort source-ref capture break registration.
|
|
429
|
+
return None
|
|
430
|
+
if not columns:
|
|
431
|
+
return None
|
|
432
|
+
# Columns only, no ``table``/``query`` binding — see the merge contract in
|
|
433
|
+
# the docstring. The ``<FV>__SOURCE`` name is synthetic so it can't be
|
|
434
|
+
# confused with the feature view itself.
|
|
435
|
+
return [
|
|
436
|
+
{
|
|
437
|
+
"name": f"{feature_view.name.resolved()}__SOURCE",
|
|
438
|
+
"source_type": SourceType.BATCH.value,
|
|
439
|
+
"columns": columns,
|
|
440
|
+
}
|
|
441
|
+
]
|
|
442
|
+
|
|
443
|
+
|
|
358
444
|
# ``list_feature_views`` output schemas. Row builders always populate the verbose
|
|
359
445
|
# schema; non-verbose callers receive _LIST_FEATURE_VIEW_SCHEMA after trimming
|
|
360
446
|
# verbose-only trailing fields.
|
|
@@ -1249,14 +1335,19 @@ class FeatureStore:
|
|
|
1249
1335
|
feature_view.name, version, agg_metadata, descs, fv_metadata_config=fv_meta_config
|
|
1250
1336
|
)
|
|
1251
1337
|
|
|
1252
|
-
# Persist the
|
|
1253
|
-
#
|
|
1254
|
-
#
|
|
1255
|
-
|
|
1338
|
+
# Persist the source-ref list. Prefer the caller-supplied list;
|
|
1339
|
+
# otherwise auto-stamp one derived from the raw ``feature_df``
|
|
1340
|
+
# schema (managed batch FVs) so imperatively-registered FVs carry
|
|
1341
|
+
# FV_SOURCE_REFS and recover cleanly during declarative
|
|
1342
|
+
# ``snow feature init`` instead of triggering a one-time
|
|
1343
|
+
# RECREATE_FV. Streaming/realtime FVs and un-derivable schemas fall
|
|
1344
|
+
# through with no row, preserving prior behavior for them.
|
|
1345
|
+
source_refs = feature_view.source_refs or _derive_source_refs_from_feature_df(feature_view)
|
|
1346
|
+
if source_refs:
|
|
1256
1347
|
self._metadata_manager.save_feature_view_source_refs(
|
|
1257
1348
|
feature_view.name,
|
|
1258
1349
|
version,
|
|
1259
|
-
FvSourceRefsMetadata(sources=list(
|
|
1350
|
+
FvSourceRefsMetadata(sources=list(source_refs)),
|
|
1260
1351
|
)
|
|
1261
1352
|
|
|
1262
1353
|
# Step 4: Save rollup metadata for PIT-correct training queries
|
|
@@ -1910,6 +2001,9 @@ class FeatureStore:
|
|
|
1910
2001
|
"Snowpark DataFrame instead if you accept the full-scan cost."
|
|
1911
2002
|
),
|
|
1912
2003
|
)
|
|
2004
|
+
# TODO(okharatsidi): add a persistent FV-level "timezone" parameter. For now, we warn
|
|
2005
|
+
# the user about potentially inaccurate results.
|
|
2006
|
+
self._warn_on_non_utc_session_timezone(feature_view)
|
|
1913
2007
|
return self._read_from_offline_store(feature_view, keys, feature_names)
|
|
1914
2008
|
else:
|
|
1915
2009
|
raise snowml_exceptions.SnowflakeMLException(
|
|
@@ -5024,6 +5118,52 @@ class FeatureStore:
|
|
|
5024
5118
|
query = f"SELECT {select_clause} FROM {table_name}{where_clause}"
|
|
5025
5119
|
return self._session.sql(query)
|
|
5026
5120
|
|
|
5121
|
+
def _get_session_timezone(self) -> Optional[str]:
|
|
5122
|
+
"""Read the timezone configured for the current session.
|
|
5123
|
+
|
|
5124
|
+
Returns:
|
|
5125
|
+
The configured timezone name, or ``None`` when it cannot be determined.
|
|
5126
|
+
"""
|
|
5127
|
+
try:
|
|
5128
|
+
rows = self._session.sql("SHOW PARAMETERS LIKE 'TIMEZONE' IN SESSION").collect()
|
|
5129
|
+
except Exception as e:
|
|
5130
|
+
logger.debug("feature store: could not determine the session timezone: %s", e)
|
|
5131
|
+
return None
|
|
5132
|
+
|
|
5133
|
+
if not rows:
|
|
5134
|
+
return None
|
|
5135
|
+
row = rows[0]
|
|
5136
|
+
for key in ("value", "VALUE"):
|
|
5137
|
+
if key in row:
|
|
5138
|
+
raw = row[key]
|
|
5139
|
+
return str(raw) if raw is not None else None
|
|
5140
|
+
return None
|
|
5141
|
+
|
|
5142
|
+
def _warn_on_non_utc_session_timezone(self, feature_view: FeatureView) -> None:
|
|
5143
|
+
"""Warn before an offline read of a tiled Postgres-backed feature view from a non-UTC session.
|
|
5144
|
+
|
|
5145
|
+
Args:
|
|
5146
|
+
feature_view: The feature view about to be read from the offline store.
|
|
5147
|
+
"""
|
|
5148
|
+
if not feature_view.is_tiled:
|
|
5149
|
+
return
|
|
5150
|
+
online_config = feature_view.online_config
|
|
5151
|
+
if online_config is None or online_config.store_type != OnlineStoreType.POSTGRES:
|
|
5152
|
+
return
|
|
5153
|
+
|
|
5154
|
+
session_timezone = self._get_session_timezone()
|
|
5155
|
+
if session_timezone is None or session_timezone.strip().upper() in _UTC_TIMEZONE_NAMES:
|
|
5156
|
+
return
|
|
5157
|
+
|
|
5158
|
+
warnings.warn(
|
|
5159
|
+
f"feature store: the current session timezone is '{session_timezone}', not UTC. Aggregation "
|
|
5160
|
+
"window boundaries are resolved in the session timezone while tile boundaries are bucketed in "
|
|
5161
|
+
"the UTC timezone, so feature values may be inaccurate. Set the session timezone to UTC "
|
|
5162
|
+
"(ALTER SESSION SET TIMEZONE = 'UTC') for consistent results.",
|
|
5163
|
+
stacklevel=3,
|
|
5164
|
+
category=UserWarning,
|
|
5165
|
+
)
|
|
5166
|
+
|
|
5027
5167
|
def _read_tiled_fv_at_current_time(
|
|
5028
5168
|
self,
|
|
5029
5169
|
feature_view: FeatureView,
|
{snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/feature_store/feature_view.py
RENAMED
|
@@ -60,11 +60,16 @@ _FEATURE_VIEW_VERSION_MAX_LENGTH = 128
|
|
|
60
60
|
|
|
61
61
|
# Postgres online store identifiers must fit PostgreSQL's 63-byte limit (NAMEDATALEN - 1); longer names
|
|
62
62
|
# are silently truncated and can collide. name+version maps to "{name}${version}$UDF_TRANSFORMED"
|
|
63
|
-
# (17 bytes of affixes)
|
|
64
|
-
# (
|
|
63
|
+
# (17 bytes of affixes), so its budget leaves a 1-byte margin. Column budgets depend on the feature view:
|
|
64
|
+
# - Tiled (aggregation) feature views wrap each column in a tile prefix, worst case the distinct-N tile
|
|
65
|
+
# column "_PARTIAL_FIRST_DISTINCT_1000_TS_<col>" (32 bytes), so the tile budget is tight.
|
|
66
|
+
# - Non-tiled (passthrough) feature views map each column 1:1 to a Postgres column with no prefix, so
|
|
67
|
+
# the passthrough budget only reserves the 1-byte margin.
|
|
68
|
+
# The padding-guard test rechecks the affixes.
|
|
65
69
|
_PG_IDENTIFIER_BYTE_LIMIT = 63
|
|
66
70
|
_POSTGRES_ONLINE_MAX_NAME_VERSION_LEN = 45
|
|
67
71
|
_POSTGRES_ONLINE_MAX_COLUMN_LEN = 30
|
|
72
|
+
_POSTGRES_ONLINE_MAX_PASSTHROUGH_COLUMN_LEN = _PG_IDENTIFIER_BYTE_LIMIT - 1
|
|
68
73
|
|
|
69
74
|
# The online-store schema is derived as "{schema}__{oft_id}", so its budget reserves room for the "__"
|
|
70
75
|
# separator and a 19-digit (64-bit) oft_id, keeping the derived identifier within the limit (63 - 2 - 19).
|
|
@@ -1085,8 +1090,11 @@ class FeatureView(lineage_node.LineageNode):
|
|
|
1085
1090
|
# Optional authored source-ref list. When the caller passes one,
|
|
1086
1091
|
# ``FeatureStore.register_feature_view`` persists it under
|
|
1087
1092
|
# ``MetadataType.FV_SOURCE_REFS`` and ``get_feature_view``
|
|
1088
|
-
# rehydrates the same list onto reconstructed FVs
|
|
1089
|
-
#
|
|
1093
|
+
# rehydrates the same list onto reconstructed FVs. When it is left
|
|
1094
|
+
# ``None``, ``register_feature_view`` auto-stamps a best-effort
|
|
1095
|
+
# source-ref derived from the raw ``feature_df`` schema for managed
|
|
1096
|
+
# batch FVs (so declarative state recovery round-trips); streaming and
|
|
1097
|
+
# realtime FVs still skip the write.
|
|
1090
1098
|
self._source_refs: Optional[list[dict[str, Any]]] = _kwargs.pop("_source_refs", None)
|
|
1091
1099
|
if self._stream_config is not None:
|
|
1092
1100
|
if online_config is not None and online_config.enable is False:
|
|
@@ -1645,8 +1653,10 @@ class FeatureView(lineage_node.LineageNode):
|
|
|
1645
1653
|
When set, :meth:`FeatureStore.register_feature_view` persists
|
|
1646
1654
|
these entries under :attr:`MetadataType.FV_SOURCE_REFS` and
|
|
1647
1655
|
``get_feature_view`` returns the same list on the reconstructed
|
|
1648
|
-
FV.
|
|
1649
|
-
|
|
1656
|
+
FV. When it is ``None``, ``register_feature_view`` still auto-stamps
|
|
1657
|
+
a best-effort source-ref derived from the raw ``feature_df`` schema
|
|
1658
|
+
for managed batch FVs; this property reflects only what was supplied
|
|
1659
|
+
at construction and is unaffected by that register-time default.
|
|
1650
1660
|
|
|
1651
1661
|
Returns:
|
|
1652
1662
|
The list of source-ref dicts as supplied, or ``None`` when
|
|
@@ -2156,7 +2166,12 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2156
2166
|
# Validate Iceberg storage configuration
|
|
2157
2167
|
if self._storage_config is not None and self._storage_config.format == StorageFormat.ICEBERG:
|
|
2158
2168
|
if self.online:
|
|
2159
|
-
|
|
2169
|
+
store_type = self._online_config.store_type if self._online_config is not None else None
|
|
2170
|
+
if store_type != OnlineStoreType.POSTGRES:
|
|
2171
|
+
raise ValueError(
|
|
2172
|
+
"Online storage with Iceberg is only supported with the Postgres online store. "
|
|
2173
|
+
"Use OnlineConfig(store_type=OnlineStoreType.POSTGRES)."
|
|
2174
|
+
)
|
|
2160
2175
|
if self._refresh_freq is None:
|
|
2161
2176
|
raise ValueError("Iceberg storage requires refresh_freq.")
|
|
2162
2177
|
|
|
@@ -2226,11 +2241,16 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2226
2241
|
key = join_key if isinstance(join_key, SqlIdentifier) else SqlIdentifier(join_key)
|
|
2227
2242
|
resolved_columns.add(key.resolved())
|
|
2228
2243
|
|
|
2244
|
+
# Tiled feature views wrap each column in a tile prefix, so they get the tighter budget;
|
|
2245
|
+
# non-tiled (passthrough) columns map 1:1 to Postgres columns and can use the full budget.
|
|
2246
|
+
column_budget = (
|
|
2247
|
+
_POSTGRES_ONLINE_MAX_COLUMN_LEN if self.is_tiled else _POSTGRES_ONLINE_MAX_PASSTHROUGH_COLUMN_LEN
|
|
2248
|
+
)
|
|
2229
2249
|
for resolved in sorted(resolved_columns):
|
|
2230
|
-
if len(resolved) >
|
|
2250
|
+
if len(resolved) > column_budget:
|
|
2231
2251
|
raise ValueError(
|
|
2232
2252
|
f"column '{resolved}' is too long for the Postgres online store: {len(resolved)} "
|
|
2233
|
-
f"characters exceeds the limit of {
|
|
2253
|
+
f"characters exceeds the limit of {column_budget}. Rename the column."
|
|
2234
2254
|
)
|
|
2235
2255
|
|
|
2236
2256
|
def _validate_window_offset_alignment(self) -> None:
|
|
@@ -7,6 +7,7 @@ as well as reading online features and ingesting records for streaming feature v
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
9
|
import datetime
|
|
10
|
+
import decimal
|
|
10
11
|
import json
|
|
11
12
|
import logging
|
|
12
13
|
import os
|
|
@@ -411,6 +412,10 @@ def _json_serialize_value(value: Any) -> Any:
|
|
|
411
412
|
# NaN -> None. NB: NaN is the only float for which ``v != v`` holds.
|
|
412
413
|
if value != value:
|
|
413
414
|
return None
|
|
415
|
+
if value == float("inf"):
|
|
416
|
+
return "inf"
|
|
417
|
+
if value == float("-inf"):
|
|
418
|
+
return "-inf"
|
|
414
419
|
return value
|
|
415
420
|
if isinstance(value, str):
|
|
416
421
|
return value
|
|
@@ -1196,7 +1201,7 @@ def _parse_query_batch_response(
|
|
|
1196
1201
|
``batch_size``, or feature metadata is missing.
|
|
1197
1202
|
"""
|
|
1198
1203
|
try:
|
|
1199
|
-
data = json.loads(raw.decode("utf-8"))
|
|
1204
|
+
data = json.loads(raw.decode("utf-8"), parse_float=decimal.Decimal)
|
|
1200
1205
|
except (json.JSONDecodeError, UnicodeDecodeError) as e:
|
|
1201
1206
|
raise snowml_exceptions.SnowflakeMLException(
|
|
1202
1207
|
error_code=error_codes.INTERNAL_SNOWML_ERROR,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from snowflake.ml.jobs._interop.exception_utils import install_exception_display_hooks
|
|
2
|
+
from snowflake.ml.jobs._interop.results import DistributedJobError, DistributedResult
|
|
2
3
|
from snowflake.ml.jobs._utils.type_utils import JOB_STATUS
|
|
3
4
|
from snowflake.ml.jobs.decorators import remote
|
|
4
5
|
from snowflake.ml.jobs.job import MLJob
|
|
@@ -26,4 +27,6 @@ __all__ = [
|
|
|
26
27
|
"JOB_STATUS",
|
|
27
28
|
"submit_from_stage",
|
|
28
29
|
"MLJobDefinition",
|
|
30
|
+
"DistributedResult",
|
|
31
|
+
"DistributedJobError",
|
|
29
32
|
]
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any, Optional
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclass(frozen=True)
|
|
6
|
+
class ExecutionResult:
|
|
7
|
+
"""
|
|
8
|
+
A result of a job execution.
|
|
9
|
+
|
|
10
|
+
Args:
|
|
11
|
+
success: Whether the execution was successful.
|
|
12
|
+
value: The value of the execution.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
success: bool
|
|
16
|
+
value: Any
|
|
17
|
+
|
|
18
|
+
def get_value(self, wrap_exceptions: bool = True) -> Any:
|
|
19
|
+
if not self.success:
|
|
20
|
+
assert isinstance(self.value, BaseException), "Unexpected non-exception value for failed result"
|
|
21
|
+
self._raise_exception(self.value, wrap_exceptions)
|
|
22
|
+
return self.value
|
|
23
|
+
|
|
24
|
+
def _raise_exception(self, exception: BaseException, wrap_exceptions: bool) -> None:
|
|
25
|
+
if wrap_exceptions:
|
|
26
|
+
raise RuntimeError(f"Job execution failed with error: {exception!r}") from exception
|
|
27
|
+
else:
|
|
28
|
+
raise exception
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass(frozen=True)
|
|
32
|
+
class LoadedExecutionResult(ExecutionResult):
|
|
33
|
+
"""
|
|
34
|
+
A result of a job execution that has been loaded from a file.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
load_error: Optional[Exception] = None
|
|
38
|
+
result_metadata: Optional[dict[str, Any]] = None
|
|
39
|
+
|
|
40
|
+
def get_value(self, wrap_exceptions: bool = True) -> Any:
|
|
41
|
+
if not self.success:
|
|
42
|
+
# Raise the original exception if available, otherwise raise the load error
|
|
43
|
+
ex = self.value
|
|
44
|
+
if not isinstance(ex, BaseException):
|
|
45
|
+
ex = RuntimeError(f"Unknown error {ex or ''}")
|
|
46
|
+
ex.__cause__ = self.load_error
|
|
47
|
+
self._raise_exception(ex, wrap_exceptions)
|
|
48
|
+
else:
|
|
49
|
+
if self.load_error:
|
|
50
|
+
raise ValueError("Job execution succeeded but result retrieval failed") from self.load_error
|
|
51
|
+
return self.value
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
@dataclass(frozen=True)
|
|
55
|
+
class DistributedResult:
|
|
56
|
+
"""Aggregated result of a multi-node job that has no single result-bearing instance.
|
|
57
|
+
|
|
58
|
+
For jobs where every instance runs the entrypoint independently — no head/worker
|
|
59
|
+
split (e.g. submitted with parallel=True) — there is no single head result to read.
|
|
60
|
+
Instead this LEFT-JOINs every instance's per-instance record onto the authoritative
|
|
61
|
+
control-plane instance set.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
success: True iff every instance in the control-plane set exited 0.
|
|
65
|
+
exit_codes: instance_id -> exit code; None = lost (killed before writing a record).
|
|
66
|
+
failed_instance: Earliest-failing instance id; None on success.
|
|
67
|
+
return_value: The run's Python return value on success — persisted by instance 0, if the
|
|
68
|
+
entrypoint produced one — else None (subprocess entrypoints, lost instances, and
|
|
69
|
+
failures have no return value).
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
success: bool
|
|
73
|
+
exit_codes: dict[int, Optional[int]]
|
|
74
|
+
failed_instance: Optional[int] = None
|
|
75
|
+
return_value: Any = None
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class DistributedJobError(RuntimeError):
|
|
79
|
+
"""Raised by ``MLJob.distributed_result()`` when a multi-node job did not fully succeed.
|
|
80
|
+
|
|
81
|
+
Carries the full :class:`DistributedResult` (``.result``) so callers can inspect per-instance
|
|
82
|
+
``exit_codes`` and ``failed_instance``. The earliest-failing instance's reconstructed
|
|
83
|
+
exception is attached by the raising site as ``__cause__`` (via ``raise ... from``), so
|
|
84
|
+
the original error and its remote traceback surface on an uncaught raise.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
def __init__(self, message: str, result: Optional[DistributedResult] = None) -> None:
|
|
88
|
+
super().__init__(message)
|
|
89
|
+
self.result = result
|
|
90
|
+
|
|
91
|
+
@classmethod
|
|
92
|
+
def from_result(cls, result: DistributedResult) -> "DistributedJobError":
|
|
93
|
+
num_succeeded = sum(1 for code in result.exit_codes.values() if code == 0)
|
|
94
|
+
num_failed = len(result.exit_codes) - num_succeeded
|
|
95
|
+
return cls(
|
|
96
|
+
f"Distributed job failed: {num_failed}/{len(result.exit_codes)} instances did not exit 0 "
|
|
97
|
+
f"(earliest failed instance: {result.failed_instance}); see .result.exit_codes for details.",
|
|
98
|
+
result=result,
|
|
99
|
+
)
|
{snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/constants.py
RENAMED
|
@@ -19,6 +19,14 @@ INSTANCES_TIMEOUT_ENV_VAR = "MLRS_INSTANCES_TIMEOUT"
|
|
|
19
19
|
INSTANCES_CHECK_INTERVAL_ENV_VAR = "MLRS_INSTANCES_CHECK_INTERVAL"
|
|
20
20
|
RUNTIME_IMAGE_TAG_ENV_VAR = "MLRS_CONTAINER_IMAGE_TAG"
|
|
21
21
|
USE_EMBEDDED_SCRIPTS_ENV_VAR = "MLRS_USE_EMBEDDED_SCRIPTS"
|
|
22
|
+
PREFLIGHT_ENV_VAR = "MLRS_DISTRIBUTED_PREFLIGHT"
|
|
23
|
+
# Adds the reference step to the preflight; no effect on its own.
|
|
24
|
+
PREFLIGHT_REFERENCE_STEP_ENV_VAR = "MLRS_PREFLIGHT_REFERENCE_STEP"
|
|
25
|
+
LAUNCH_BACKEND_ENV_VAR = "MLRS_LAUNCH_BACKEND"
|
|
26
|
+
# Value for LAUNCH_BACKEND_ENV_VAR that selects the passthrough launch path: the user's
|
|
27
|
+
# entrypoint runs directly on every instance (Ray is still brought up, for readiness only).
|
|
28
|
+
# Must match the literal the image's launcher compares against.
|
|
29
|
+
LAUNCH_BACKEND_PASSTHROUGH = "passthrough"
|
|
22
30
|
|
|
23
31
|
# Stage mount paths
|
|
24
32
|
STAGE_VOLUME_MOUNT_PATH = "/mnt/job_stage"
|
{snowflake_ml_python-1.52.0 → snowflake_ml_python-1.53.0}/snowflake/ml/jobs/_utils/payload_utils.py
RENAMED
|
@@ -239,7 +239,7 @@ def resolve_entrypoint(
|
|
|
239
239
|
if entrypoint.suffix not in _SUPPORTED_ENTRYPOINT_EXTENSIONS:
|
|
240
240
|
raise ValueError(
|
|
241
241
|
"Unsupported entrypoint type:"
|
|
242
|
-
f" supported={','.join(_SUPPORTED_ENTRYPOINT_EXTENSIONS)} got={entrypoint.suffix}"
|
|
242
|
+
f" supported={','.join(sorted(_SUPPORTED_ENTRYPOINT_EXTENSIONS))} got={entrypoint.suffix}"
|
|
243
243
|
)
|
|
244
244
|
|
|
245
245
|
return type_utils.PayloadEntrypoint(
|