snowflake-ml-python 1.43.0__tar.gz → 1.44.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.43.0 → snowflake_ml_python-1.44.0}/CHANGELOG.md +11 -1
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/PKG-INFO +20 -11
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/pyproject.toml +6 -6
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/error_codes.py +2 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/feature_store.py +23 -6
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/feature_view.py +19 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/online_service.py +2 -13
- snowflake_ml_python-1.44.0/snowflake/ml/feature_store/online_service_http_client.py +300 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/spec/builder.py +12 -1
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +8 -4
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +14 -22
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +2 -3
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/model/model_version_impl.py +31 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/ops/model_ops.py +18 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/sql/model.py +1 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +1 -1
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +21 -6
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +5 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_meta/model_sample_input_data.py +61 -38
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -1
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake_ml_python.egg-info/PKG-INFO +20 -11
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake_ml_python.egg-info/SOURCES.txt +0 -1
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake_ml_python.egg-info/requires.txt +8 -9
- snowflake_ml_python-1.43.0/snowflake/ml/feature_store/online_service_http_client.py +0 -186
- snowflake_ml_python-1.43.0/snowflake/ml/jobs/_utils/scripts/signal_workers_test.py +0 -209
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/README.md +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/tee.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/_internal/utils/url.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/_compute_fn_validation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/aggregation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/feature.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/feature_group.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/feature_view_append_only_validation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/feature_view_refresh_freq.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/metadata_manager.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/realtime_config.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/realtime_dataset.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/realtime_dataset_udf.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/realtime_registration.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/request_source.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/spec/models.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/spec/table_schema_evolution.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/stream_config.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/stream_source.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/streaming_registration.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/tile_sql_generator.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/results.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/_utils/type_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/job.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/job_definition.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/jobs/manager.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/model/batch_inference_task.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/ops/service_ops.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/sql/service.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_save_options.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/batch/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/code_path.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/compute_pool.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/models/huggingface.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/openai_signatures.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/type_hints.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/model/volatility.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/utils/stage_file.py +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.44.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:
|
|
@@ -241,7 +241,6 @@ Requires-Dist: fsspec[http]<2026,>=2024.6.1
|
|
|
241
241
|
Requires-Dist: h2<5,>=4.3.0
|
|
242
242
|
Requires-Dist: importlib_resources<7,>=6.1.1
|
|
243
243
|
Requires-Dist: numpy<3,>=1.23
|
|
244
|
-
Requires-Dist: orjson<4,>=3.11.0
|
|
245
244
|
Requires-Dist: packaging<26,>=20.9
|
|
246
245
|
Requires-Dist: pandas<3,>=2.1.4
|
|
247
246
|
Requires-Dist: platformdirs<5
|
|
@@ -261,14 +260,14 @@ Requires-Dist: tqdm<5
|
|
|
261
260
|
Requires-Dist: typing-extensions<5,>=4.1.0
|
|
262
261
|
Requires-Dist: xgboost<4
|
|
263
262
|
Provides-Extra: all
|
|
264
|
-
Requires-Dist: altair<
|
|
263
|
+
Requires-Dist: altair<7,>=5; extra == "all"
|
|
265
264
|
Requires-Dist: catboost<2,>=1.2.0; extra == "all"
|
|
266
265
|
Requires-Dist: keras<4,>=2.0.0; extra == "all"
|
|
267
266
|
Requires-Dist: lightgbm<5,>=4.1.0; extra == "all"
|
|
268
|
-
Requires-Dist: mlflow<
|
|
267
|
+
Requires-Dist: mlflow<4,>=2.16.0; extra == "all"
|
|
269
268
|
Requires-Dist: prophet<2,>=1.1.0; extra == "all"
|
|
270
269
|
Requires-Dist: sentence-transformers<6,>=2.7.0; extra == "all"
|
|
271
|
-
Requires-Dist: sentencepiece<0.
|
|
270
|
+
Requires-Dist: sentencepiece<0.3,>=0.1.95; extra == "all"
|
|
272
271
|
Requires-Dist: streamlit<2,>=1.30.0; extra == "all"
|
|
273
272
|
Requires-Dist: tensorflow<3,>=2.17.0; extra == "all"
|
|
274
273
|
Requires-Dist: tokenizers<1,>=0.15.1; extra == "all"
|
|
@@ -276,7 +275,7 @@ Requires-Dist: torch<3,>=2.0.1; extra == "all"
|
|
|
276
275
|
Requires-Dist: torchdata<1,>=0.4; extra == "all"
|
|
277
276
|
Requires-Dist: transformers!=4.51.3,<6,>=4.39.3; extra == "all"
|
|
278
277
|
Provides-Extra: altair
|
|
279
|
-
Requires-Dist: altair<
|
|
278
|
+
Requires-Dist: altair<7,>=5; extra == "altair"
|
|
280
279
|
Provides-Extra: catboost
|
|
281
280
|
Requires-Dist: catboost<2,>=1.2.0; extra == "catboost"
|
|
282
281
|
Provides-Extra: keras
|
|
@@ -286,15 +285,15 @@ Requires-Dist: torch<3,>=2.0.1; extra == "keras"
|
|
|
286
285
|
Provides-Extra: lightgbm
|
|
287
286
|
Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
|
|
288
287
|
Provides-Extra: llm
|
|
289
|
-
Requires-Dist: mlflow<
|
|
288
|
+
Requires-Dist: mlflow<4,>=2.16.0; extra == "llm"
|
|
290
289
|
Requires-Dist: sentence-transformers<6,>=2.7.0; extra == "llm"
|
|
291
|
-
Requires-Dist: sentencepiece<0.
|
|
290
|
+
Requires-Dist: sentencepiece<0.3,>=0.1.95; extra == "llm"
|
|
292
291
|
Requires-Dist: tokenizers<1,>=0.15.1; extra == "llm"
|
|
293
292
|
Requires-Dist: torch<3,>=2.0.1; extra == "llm"
|
|
294
293
|
Requires-Dist: torchdata<1,>=0.4; extra == "llm"
|
|
295
294
|
Requires-Dist: transformers!=4.51.3,<6,>=4.39.3; extra == "llm"
|
|
296
295
|
Provides-Extra: mlflow
|
|
297
|
-
Requires-Dist: mlflow<
|
|
296
|
+
Requires-Dist: mlflow<4,>=2.16.0; extra == "mlflow"
|
|
298
297
|
Provides-Extra: prophet
|
|
299
298
|
Requires-Dist: prophet<2,>=1.1.0; extra == "prophet"
|
|
300
299
|
Provides-Extra: streamlit
|
|
@@ -306,7 +305,7 @@ Requires-Dist: torch<3,>=2.0.1; extra == "torch"
|
|
|
306
305
|
Requires-Dist: torchdata<1,>=0.4; extra == "torch"
|
|
307
306
|
Provides-Extra: transformers
|
|
308
307
|
Requires-Dist: sentence-transformers<6,>=2.7.0; extra == "transformers"
|
|
309
|
-
Requires-Dist: sentencepiece<0.
|
|
308
|
+
Requires-Dist: sentencepiece<0.3,>=0.1.95; extra == "transformers"
|
|
310
309
|
Requires-Dist: tokenizers<1,>=0.15.1; extra == "transformers"
|
|
311
310
|
Requires-Dist: torch<3,>=2.0.1; extra == "transformers"
|
|
312
311
|
Requires-Dist: transformers!=4.51.3,<6,>=4.39.3; extra == "transformers"
|
|
@@ -417,7 +416,17 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
417
416
|
|
|
418
417
|
# Release History
|
|
419
418
|
|
|
420
|
-
## 1.
|
|
419
|
+
## 1.44.0
|
|
420
|
+
|
|
421
|
+
### New Features
|
|
422
|
+
|
|
423
|
+
### Bug Fixes
|
|
424
|
+
|
|
425
|
+
### Behavior Changes
|
|
426
|
+
|
|
427
|
+
### Deprecations
|
|
428
|
+
|
|
429
|
+
## 1.43.0 (2026-06-16)
|
|
421
430
|
|
|
422
431
|
### New Features
|
|
423
432
|
|
|
@@ -8,7 +8,7 @@ description = "The machine learning client library that is used for interacting
|
|
|
8
8
|
classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis",]
|
|
9
9
|
requires-python = ">=3.9, <3.14"
|
|
10
10
|
dynamic = [ "version", "readme",]
|
|
11
|
-
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "
|
|
11
|
+
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<26", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "scikit-learn<1.8", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.17.3,<5", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost<4",]
|
|
12
12
|
[[project.authors]]
|
|
13
13
|
name = "Snowflake, Inc"
|
|
14
14
|
email = "support@snowflake.com"
|
|
@@ -24,18 +24,18 @@ Issues = "https://github.com/snowflakedb/snowflake-ml-python/issues"
|
|
|
24
24
|
Changelog = "https://github.com/snowflakedb/snowflake-ml-python/blob/master/CHANGELOG.md"
|
|
25
25
|
|
|
26
26
|
[project.optional-dependencies]
|
|
27
|
-
all = [ "altair>=5,<
|
|
28
|
-
altair = [ "altair>=5,<
|
|
27
|
+
all = [ "altair>=5,<7", "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <4", "prophet>=1.1.0, <2", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "streamlit>=1.30.0,<2", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
|
|
28
|
+
altair = [ "altair>=5,<7",]
|
|
29
29
|
catboost = [ "catboost>=1.2.0, <2",]
|
|
30
30
|
keras = [ "keras>=2.0.0,<4", "tensorflow>=2.17.0,<3", "torch>=2.0.1,<3",]
|
|
31
31
|
lightgbm = [ "lightgbm>=4.1.0, <5",]
|
|
32
|
-
llm = [ "mlflow>=2.16.0, <
|
|
33
|
-
mlflow = [ "mlflow>=2.16.0, <
|
|
32
|
+
llm = [ "mlflow>=2.16.0, <4", "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,!=4.51.3,<6",]
|
|
33
|
+
mlflow = [ "mlflow>=2.16.0, <4",]
|
|
34
34
|
prophet = [ "prophet>=1.1.0, <2",]
|
|
35
35
|
streamlit = [ "streamlit>=1.30.0,<2",]
|
|
36
36
|
tensorflow = [ "tensorflow>=2.17.0,<3",]
|
|
37
37
|
torch = [ "torch>=2.0.1,<3", "torchdata>=0.4,<1",]
|
|
38
|
-
transformers = [ "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.
|
|
38
|
+
transformers = [ "sentence-transformers>=2.7.0,<6", "sentencepiece>=0.1.95,<0.3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "transformers>=4.39.3,!=4.51.3,<6",]
|
|
39
39
|
|
|
40
40
|
[tool.setuptools.package-data]
|
|
41
41
|
"*" = [ "*",]
|
|
@@ -63,6 +63,8 @@ METHOD_NOT_ALLOWED = "2102"
|
|
|
63
63
|
NOT_IMPLEMENTED = "2103"
|
|
64
64
|
# User needs to opt in to use a feature.
|
|
65
65
|
OPT_IN_REQUIRED = "2104"
|
|
66
|
+
# Caller's current role lacks the required ownership/privilege to perform the operation.
|
|
67
|
+
INSUFFICIENT_PRIVILEGES = "2105"
|
|
66
68
|
|
|
67
69
|
# Calling an API with unsupported keywords/values.
|
|
68
70
|
INVALID_ARGUMENT = "2110"
|
|
@@ -692,6 +692,18 @@ class FeatureStore:
|
|
|
692
692
|
self._check_database_exists_or_throw()
|
|
693
693
|
if creation_mode == CreationMode.FAIL_IF_NOT_EXIST:
|
|
694
694
|
self._check_internal_objects_exist_or_throw()
|
|
695
|
+
# Best-effort: ensure the snapshot status table exists even in connect-only mode.
|
|
696
|
+
# The table is an internal implementation object (not user-visible) that must be
|
|
697
|
+
# present for scheduled snapshot tasks to succeed. Swallow any error — the caller
|
|
698
|
+
# may lack CREATE TABLE privilege, and the absence of the table does not prevent
|
|
699
|
+
# non-append_only feature store operations from working.
|
|
700
|
+
try:
|
|
701
|
+
self._ensure_snapshot_status_table_exists()
|
|
702
|
+
except Exception:
|
|
703
|
+
logger.debug(
|
|
704
|
+
"feature store: could not ensure snapshot status table exists "
|
|
705
|
+
"(insufficient privilege or schema not writable); skipping."
|
|
706
|
+
)
|
|
695
707
|
|
|
696
708
|
else:
|
|
697
709
|
try:
|
|
@@ -720,7 +732,7 @@ class FeatureStore:
|
|
|
720
732
|
) -> online_service_http_client.OnlineServiceHttpClient:
|
|
721
733
|
"""Return the FeatureStore-scoped HTTP client, creating it on first use."""
|
|
722
734
|
if self._online_http_client is None:
|
|
723
|
-
self._online_http_client = online_service_http_client.OnlineServiceHttpClient()
|
|
735
|
+
self._online_http_client = online_service_http_client.OnlineServiceHttpClient(session=self._session)
|
|
724
736
|
return self._online_http_client
|
|
725
737
|
|
|
726
738
|
def close(self) -> None:
|
|
@@ -7777,6 +7789,14 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7777
7789
|
is_tiled = agg_metadata is not None
|
|
7778
7790
|
# Restored from the FEATURE_SPECS row; None when no tiling metadata.
|
|
7779
7791
|
aggregation_secondary_keys = agg_metadata.aggregation_secondary_keys if agg_metadata else None
|
|
7792
|
+
# The persisted aggregation method must be known before _construct_feature_view runs
|
|
7793
|
+
# validation: reconstruction routes through the batch path, where window/offset alignment
|
|
7794
|
+
# is enforced for TILES but relaxed for CONTINUOUS. Setting it afterward would be too late.
|
|
7795
|
+
feature_aggregation_method = (
|
|
7796
|
+
FeatureAggregationMethod(agg_metadata.feature_aggregation_method)
|
|
7797
|
+
if agg_metadata and agg_metadata.feature_aggregation_method
|
|
7798
|
+
else (FeatureAggregationMethod.TILES if is_tiled else None)
|
|
7799
|
+
)
|
|
7780
7800
|
|
|
7781
7801
|
# Rehydrate the authored source-ref list onto the reconstructed
|
|
7782
7802
|
# FV when a ``FV_SOURCE_REFS`` row was persisted at register time.
|
|
@@ -7843,6 +7863,7 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7843
7863
|
feature_granularity=feature_granularity,
|
|
7844
7864
|
aggregation_specs=aggregation_specs,
|
|
7845
7865
|
aggregation_secondary_keys=aggregation_secondary_keys,
|
|
7866
|
+
feature_aggregation_method=feature_aggregation_method,
|
|
7846
7867
|
is_streaming=fv_metadata.is_streaming,
|
|
7847
7868
|
append_only=fv_metadata.is_append_only,
|
|
7848
7869
|
backup_source=backup_source,
|
|
@@ -7856,11 +7877,6 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7856
7877
|
fv_meta_config = self._metadata_manager.get_feature_view_metadata_config(name.identifier(), version)
|
|
7857
7878
|
fv._authoring_pkg_version = fv_meta_config.authoring_pkg_version if fv_meta_config else None
|
|
7858
7879
|
|
|
7859
|
-
if agg_metadata and agg_metadata.feature_aggregation_method:
|
|
7860
|
-
fv._feature_aggregation_method = FeatureAggregationMethod(agg_metadata.feature_aggregation_method)
|
|
7861
|
-
elif is_tiled:
|
|
7862
|
-
fv._feature_aggregation_method = FeatureAggregationMethod.TILES
|
|
7863
|
-
|
|
7864
7880
|
# For streaming FVs, attach the function source from metadata
|
|
7865
7881
|
if fv_metadata.is_streaming:
|
|
7866
7882
|
streaming_meta = self._metadata_manager.get_streaming_metadata(name.identifier(), version)
|
|
@@ -7905,6 +7921,7 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7905
7921
|
feature_granularity=feature_granularity,
|
|
7906
7922
|
aggregation_specs=aggregation_specs,
|
|
7907
7923
|
aggregation_secondary_keys=aggregation_secondary_keys,
|
|
7924
|
+
feature_aggregation_method=feature_aggregation_method,
|
|
7908
7925
|
storage_config=storage_config,
|
|
7909
7926
|
is_streaming=fv_metadata.is_streaming,
|
|
7910
7927
|
source_refs=restored_source_refs,
|
{snowflake_ml_python-1.43.0 → snowflake_ml_python-1.44.0}/snowflake/ml/feature_store/feature_view.py
RENAMED
|
@@ -971,6 +971,10 @@ class FeatureView(lineage_node.LineageNode):
|
|
|
971
971
|
else:
|
|
972
972
|
if feature_aggregation_method is not None:
|
|
973
973
|
raise ValueError("feature_aggregation_method is only supported for streaming feature views.")
|
|
974
|
+
# Reconstructed streaming FVs come through this batch path (via _is_streaming_marker)
|
|
975
|
+
# and carry their persisted aggregation method so that validation (e.g. window/offset
|
|
976
|
+
# alignment, which is relaxed for CONTINUOUS) matches the original registration.
|
|
977
|
+
self._feature_aggregation_method = _kwargs.pop("_feature_aggregation_method", None)
|
|
974
978
|
self._timestamp_col = SqlIdentifier(timestamp_col) if timestamp_col is not None else None
|
|
975
979
|
self._feature_granularity = feature_granularity
|
|
976
980
|
self._aggregation_specs = _kwargs.pop("_aggregation_specs", None)
|
|
@@ -2073,10 +2077,17 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2073
2077
|
|
|
2074
2078
|
This ensures clean tile boundaries for aggregations.
|
|
2075
2079
|
Lifetime windows are exempt from this validation as they aggregate all tiles.
|
|
2080
|
+
CONTINUOUS aggregations are also exempt: feature_granularity is only an internal
|
|
2081
|
+
tile size there, so any lookback window and offset are allowed.
|
|
2076
2082
|
|
|
2077
2083
|
Raises:
|
|
2078
2084
|
ValueError: If window or offset is not a multiple of feature_granularity.
|
|
2079
2085
|
"""
|
|
2086
|
+
# Window/offset alignment only matters for TILES, where features are assembled
|
|
2087
|
+
# from whole tiles. CONTINUOUS aggregation allows any lookback window/offset.
|
|
2088
|
+
if self._feature_aggregation_method == FeatureAggregationMethod.CONTINUOUS:
|
|
2089
|
+
return
|
|
2090
|
+
|
|
2080
2091
|
from snowflake.ml.feature_store.interval_utils import interval_to_seconds
|
|
2081
2092
|
|
|
2082
2093
|
granularity_seconds = interval_to_seconds(self._feature_granularity) # type: ignore[arg-type]
|
|
@@ -2345,6 +2356,11 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2345
2356
|
if json_dict.get("_aggregation_specs"):
|
|
2346
2357
|
aggregation_specs = [AggregationSpec.from_dict(s) for s in json_dict["_aggregation_specs"]]
|
|
2347
2358
|
|
|
2359
|
+
# Restore the aggregation method before reconstruction so validation (e.g. window/offset
|
|
2360
|
+
# alignment, relaxed for CONTINUOUS) matches the original registration.
|
|
2361
|
+
agg_method_raw = json_dict.get("_feature_aggregation_method")
|
|
2362
|
+
feature_aggregation_method = FeatureAggregationMethod(agg_method_raw) if agg_method_raw else None
|
|
2363
|
+
|
|
2348
2364
|
fv = FeatureView._construct_feature_view(
|
|
2349
2365
|
name=json_dict["_name"],
|
|
2350
2366
|
entities=entities,
|
|
@@ -2369,6 +2385,7 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2369
2385
|
),
|
|
2370
2386
|
feature_granularity=json_dict.get("_feature_granularity"),
|
|
2371
2387
|
aggregation_specs=aggregation_specs,
|
|
2388
|
+
feature_aggregation_method=feature_aggregation_method,
|
|
2372
2389
|
storage_config=(
|
|
2373
2390
|
StorageConfig.from_json(json_dict["_storage_config"]) if json_dict.get("_storage_config") else None
|
|
2374
2391
|
),
|
|
@@ -2470,6 +2487,7 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2470
2487
|
feature_granularity: Optional[str] = None,
|
|
2471
2488
|
aggregation_specs: Optional[list[AggregationSpec]] = None,
|
|
2472
2489
|
aggregation_secondary_keys: Optional[list[str]] = None,
|
|
2490
|
+
feature_aggregation_method: Optional[FeatureAggregationMethod] = None,
|
|
2473
2491
|
storage_config: Optional[StorageConfig] = None,
|
|
2474
2492
|
is_streaming: bool = False,
|
|
2475
2493
|
append_only: bool = False,
|
|
@@ -2510,6 +2528,7 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2510
2528
|
feature_granularity=feature_granularity,
|
|
2511
2529
|
_aggregation_specs=aggregation_specs,
|
|
2512
2530
|
aggregation_secondary_keys=aggregation_secondary_keys,
|
|
2531
|
+
_feature_aggregation_method=feature_aggregation_method,
|
|
2513
2532
|
storage_config=storage_config,
|
|
2514
2533
|
_is_streaming_marker=is_streaming,
|
|
2515
2534
|
_source_refs=source_refs,
|
|
@@ -697,20 +697,12 @@ def stream_ingest_records(
|
|
|
697
697
|
original_exception=ValueError("records must be non-empty for stream ingest."),
|
|
698
698
|
)
|
|
699
699
|
resolved = online_service_http_client.ingest_api_url(ingest_base_url)
|
|
700
|
-
logger.debug(
|
|
701
|
-
"Ingest API: url=%r stream_source=%r num_records=%d",
|
|
702
|
-
resolved,
|
|
703
|
-
stream_source_name,
|
|
704
|
-
len(records),
|
|
705
|
-
)
|
|
706
700
|
serializable = [{k: _json_serialize_value(v) for k, v in row.items()} for row in records]
|
|
707
701
|
body: dict[str, Any] = {"records": {stream_source_name: serializable}}
|
|
708
|
-
# PAT is validated up-front (caller may not have a pooled client yet).
|
|
709
|
-
_ = online_service_http_client.auth_headers(session)
|
|
710
702
|
owned_client: Optional[online_service_http_client.OnlineServiceHttpClient] = None
|
|
711
703
|
client = http_client
|
|
712
704
|
if client is None:
|
|
713
|
-
owned_client = online_service_http_client.OnlineServiceHttpClient()
|
|
705
|
+
owned_client = online_service_http_client.OnlineServiceHttpClient(session=session)
|
|
714
706
|
client = owned_client
|
|
715
707
|
try:
|
|
716
708
|
status, raw = client.post_json(resolved, body, timeout_sec)
|
|
@@ -1376,14 +1368,11 @@ def read_postgres_online_features(
|
|
|
1376
1368
|
)
|
|
1377
1369
|
|
|
1378
1370
|
resolved_query_url = online_service_http_client.query_api_url(query_url)
|
|
1379
|
-
logger.debug("Query API url=%r", resolved_query_url)
|
|
1380
1371
|
url = resolved_query_url
|
|
1381
|
-
# PAT is validated eagerly so callers fail fast even with an empty key batch.
|
|
1382
|
-
_ = online_service_http_client.auth_headers()
|
|
1383
1372
|
owned_client: Optional[online_service_http_client.OnlineServiceHttpClient] = None
|
|
1384
1373
|
client = http_client
|
|
1385
1374
|
if client is None:
|
|
1386
|
-
owned_client = online_service_http_client.OnlineServiceHttpClient()
|
|
1375
|
+
owned_client = online_service_http_client.OnlineServiceHttpClient(session=session)
|
|
1387
1376
|
client = owned_client
|
|
1388
1377
|
|
|
1389
1378
|
out: list[dict[str, Any]] = []
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
"""HTTP client for the Online Service REST APIs (Query + Ingest).
|
|
2
|
+
|
|
3
|
+
HTTP/2 ``httpx`` client cached per ``(scheme://host, proxy)``. Auth resolution order:
|
|
4
|
+
in-session PAT (``authenticator='PROGRAMMATIC_ACCESS_TOKEN'``) → ``SNOWFLAKE_PAT`` env var → raise.
|
|
5
|
+
|
|
6
|
+
NOTE: We intentionally do NOT issue a session token from the Snowpark connection.
|
|
7
|
+
A session token reuses the caller's existing GS session; when that session was created
|
|
8
|
+
by the Python connector (``clientAppId=PythonSnowpark``), GS encodes the
|
|
9
|
+
``system$snowservices_resolve_ingress`` result in ARROW format, which the SPCS ingress
|
|
10
|
+
proxy cannot parse (it only reads ``rowset``, null for ARROW) → "empty data" → HTTP 500.
|
|
11
|
+
A real PAT forces a fresh GS session (``clientAppId=SnowServices Ingress``) → JSON → works.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import json
|
|
17
|
+
import logging
|
|
18
|
+
import os
|
|
19
|
+
import urllib.parse
|
|
20
|
+
import urllib.request
|
|
21
|
+
from typing import Any, Callable, Optional
|
|
22
|
+
|
|
23
|
+
from snowflake.ml._internal.exceptions import (
|
|
24
|
+
error_codes,
|
|
25
|
+
exceptions as snowml_exceptions,
|
|
26
|
+
)
|
|
27
|
+
from snowflake.snowpark import Session
|
|
28
|
+
|
|
29
|
+
logger = logging.getLogger(__name__)
|
|
30
|
+
|
|
31
|
+
_QUERY_API_REL_PATH = "api/v1/query"
|
|
32
|
+
_INGEST_API_REL_PATH = "api/v1/ingest"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def query_api_url(query_base_url: str) -> str:
|
|
36
|
+
"""Append ``api/v1/query`` to the Online Service ``query`` endpoint URL from status JSON."""
|
|
37
|
+
base = query_base_url.strip().rstrip("/") + "/"
|
|
38
|
+
return urllib.parse.urljoin(base, _QUERY_API_REL_PATH)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def ingest_api_url(ingest_base_url: str) -> str:
|
|
42
|
+
"""Append ``api/v1/ingest`` to the Online Service ``ingest`` endpoint URL from status JSON."""
|
|
43
|
+
base = ingest_base_url.strip().rstrip("/") + "/"
|
|
44
|
+
return urllib.parse.urljoin(base, _INGEST_API_REL_PATH)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def online_service_pat_from_env() -> str:
|
|
48
|
+
"""Read PAT from ``SNOWFLAKE_PAT``; legacy lookup used by the env-var fallback path.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
PAT string from ``SNOWFLAKE_PAT``.
|
|
52
|
+
|
|
53
|
+
Raises:
|
|
54
|
+
SnowflakeMLException: When ``SNOWFLAKE_PAT`` is unset or empty.
|
|
55
|
+
"""
|
|
56
|
+
pat = os.environ.get("SNOWFLAKE_PAT", "").strip()
|
|
57
|
+
if pat:
|
|
58
|
+
return pat
|
|
59
|
+
raise snowml_exceptions.SnowflakeMLException(
|
|
60
|
+
error_code=error_codes.INVALID_ARGUMENT,
|
|
61
|
+
original_exception=RuntimeError(
|
|
62
|
+
"Online Service requires a Snowflake Programmatic Access Token (PAT). "
|
|
63
|
+
"Set the SNOWFLAKE_PAT environment variable "
|
|
64
|
+
"(export in your shell or set os.environ in your notebook)."
|
|
65
|
+
),
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _pat_token_from_session(session: Session) -> Optional[str]:
|
|
70
|
+
"""Pull a PAT from the session when ``authenticator='PROGRAMMATIC_ACCESS_TOKEN'``.
|
|
71
|
+
|
|
72
|
+
Args:
|
|
73
|
+
session: Snowpark session.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
PAT string, or ``None`` if the session isn't PAT-authed.
|
|
77
|
+
"""
|
|
78
|
+
try:
|
|
79
|
+
from snowflake.connector.auth.pat import AuthByPAT
|
|
80
|
+
|
|
81
|
+
auth_cls = session.connection.auth_class
|
|
82
|
+
if not isinstance(auth_cls, AuthByPAT):
|
|
83
|
+
return None
|
|
84
|
+
pat = auth_cls.assertion_content
|
|
85
|
+
if isinstance(pat, str) and pat.strip():
|
|
86
|
+
return pat.strip()
|
|
87
|
+
except Exception:
|
|
88
|
+
logger.debug("PAT extraction from session failed", exc_info=True)
|
|
89
|
+
return None
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
_NO_AUTH_MESSAGE = (
|
|
93
|
+
"Online Service requires a Programmatic Access Token (PAT). Either create the "
|
|
94
|
+
"Snowpark Session with authenticator='PROGRAMMATIC_ACCESS_TOKEN' (PAT in password), "
|
|
95
|
+
"or set the SNOWFLAKE_PAT environment variable. A session token cannot be used: it "
|
|
96
|
+
"reuses the caller's GS session and triggers an ARROW response the ingress proxy "
|
|
97
|
+
"cannot parse."
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def auth_headers(session: Optional[Session] = None) -> dict[str, str]:
|
|
102
|
+
"""Build HTTP headers via a one-shot auth resolution; per-request and not cached.
|
|
103
|
+
|
|
104
|
+
Prefer :class:`OnlineServiceHttpClient` for the hot path — it captures the session
|
|
105
|
+
once at construction time and reuses it. This standalone helper is for callers
|
|
106
|
+
that need a quick auth-validation pre-flight.
|
|
107
|
+
|
|
108
|
+
Resolution: in-session PAT (if ``authenticator='PROGRAMMATIC_ACCESS_TOKEN'``) \u2192
|
|
109
|
+
``SNOWFLAKE_PAT`` env var. A session token is intentionally never used (see module docstring).
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
session: Snowpark session for the resolution chain; ``None`` falls through to env var.
|
|
113
|
+
|
|
114
|
+
Returns:
|
|
115
|
+
Dict with ``Authorization``, ``Content-Type``, and ``Accept`` headers.
|
|
116
|
+
|
|
117
|
+
Raises:
|
|
118
|
+
SnowflakeMLException: When no auth path resolves a token.
|
|
119
|
+
"""
|
|
120
|
+
token: Optional[str] = None
|
|
121
|
+
if session is not None:
|
|
122
|
+
token = _pat_token_from_session(session)
|
|
123
|
+
if not token:
|
|
124
|
+
token = os.environ.get("SNOWFLAKE_PAT", "").strip() or None
|
|
125
|
+
if not token:
|
|
126
|
+
raise snowml_exceptions.SnowflakeMLException(
|
|
127
|
+
error_code=error_codes.INVALID_ARGUMENT,
|
|
128
|
+
original_exception=RuntimeError(_NO_AUTH_MESSAGE),
|
|
129
|
+
)
|
|
130
|
+
return {
|
|
131
|
+
"Authorization": f'Snowflake Token="{token}"',
|
|
132
|
+
"Content-Type": "application/json",
|
|
133
|
+
"Accept": "application/json",
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def _proxy_for_url(url: str) -> Optional[str]:
|
|
138
|
+
"""Proxy URL for ``url`` per ``NO_PROXY`` and the env-derived proxy table; ``None`` for direct."""
|
|
139
|
+
parsed = urllib.parse.urlparse(url)
|
|
140
|
+
host = parsed.hostname or ""
|
|
141
|
+
if host and urllib.request.proxy_bypass(host):
|
|
142
|
+
return None
|
|
143
|
+
proxies = urllib.request.getproxies()
|
|
144
|
+
return proxies.get(parsed.scheme) or proxies.get("all")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
class OnlineServiceHttpClient:
|
|
148
|
+
"""HTTP/2-enabled httpx client for the Online Service, cached per origin+proxy.
|
|
149
|
+
|
|
150
|
+
Caches one ``httpx.Client(http2=True)`` per ``(scheme://host, proxy)`` so concurrent reads
|
|
151
|
+
share a single multiplexed connection per origin. Falls back to HTTP/1.1 transparently if
|
|
152
|
+
the server's ALPN does not advertise h2. Honors ``HTTPS_PROXY`` / ``HTTP_PROXY`` /
|
|
153
|
+
``NO_PROXY`` via :func:`_proxy_for_url`.
|
|
154
|
+
|
|
155
|
+
When ``session`` is provided and was created with
|
|
156
|
+
``authenticator='PROGRAMMATIC_ACCESS_TOKEN'``, the in-session PAT is used. Otherwise
|
|
157
|
+
falls back to the ``SNOWFLAKE_PAT`` env var. A session token is intentionally never
|
|
158
|
+
used — it reuses the caller's GS session and triggers an ARROW response the ingress
|
|
159
|
+
proxy cannot parse (see module docstring).
|
|
160
|
+
"""
|
|
161
|
+
|
|
162
|
+
def __init__(
|
|
163
|
+
self,
|
|
164
|
+
*,
|
|
165
|
+
session: Optional[Session] = None,
|
|
166
|
+
max_connections: int = 8,
|
|
167
|
+
_transport_factory: Optional[Callable[..., Any]] = None,
|
|
168
|
+
) -> None:
|
|
169
|
+
self._max_connections = max_connections
|
|
170
|
+
self._clients_by_key: dict[tuple[str, Optional[str]], Any] = {}
|
|
171
|
+
self._http2_logged_for_origin: set[str] = set()
|
|
172
|
+
self._transport_factory = _transport_factory
|
|
173
|
+
self._closed = False
|
|
174
|
+
self._session: Optional[Session] = session
|
|
175
|
+
self._session_pat: Optional[str] = _pat_token_from_session(session) if session is not None else None
|
|
176
|
+
|
|
177
|
+
def _resolve_token(self, url: str) -> str:
|
|
178
|
+
"""Resolve the bearer token: in-session PAT → ``SNOWFLAKE_PAT`` env var.
|
|
179
|
+
|
|
180
|
+
A session token is intentionally never used — it reuses the caller's GS session
|
|
181
|
+
and triggers an ARROW response the ingress proxy cannot parse (see module docstring).
|
|
182
|
+
|
|
183
|
+
Args:
|
|
184
|
+
url: Online Service URL (unused; kept for signature symmetry).
|
|
185
|
+
|
|
186
|
+
Returns:
|
|
187
|
+
Token string for the ``Authorization`` header.
|
|
188
|
+
|
|
189
|
+
Raises:
|
|
190
|
+
SnowflakeMLException: when no auth path can produce a token.
|
|
191
|
+
"""
|
|
192
|
+
del url
|
|
193
|
+
if self._session_pat:
|
|
194
|
+
logger.info("Online Service auth: resolved via session PAT (len=%d)", len(self._session_pat))
|
|
195
|
+
return self._session_pat
|
|
196
|
+
env_pat = os.environ.get("SNOWFLAKE_PAT", "").strip()
|
|
197
|
+
if env_pat:
|
|
198
|
+
logger.info("Online Service auth: resolved via SNOWFLAKE_PAT env var (len=%d)", len(env_pat))
|
|
199
|
+
return env_pat
|
|
200
|
+
raise snowml_exceptions.SnowflakeMLException(
|
|
201
|
+
error_code=error_codes.INVALID_ARGUMENT,
|
|
202
|
+
original_exception=RuntimeError(_NO_AUTH_MESSAGE),
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
def _build_auth_headers(self, url: str) -> dict[str, str]:
|
|
206
|
+
return {
|
|
207
|
+
"Authorization": f'Snowflake Token="{self._resolve_token(url)}"',
|
|
208
|
+
"Content-Type": "application/json",
|
|
209
|
+
"Accept": "application/json",
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
def _client_for_url(self, url: str) -> Any:
|
|
213
|
+
"""Cached ``httpx.Client(http2=True)`` keyed by (scheme://host, proxy)."""
|
|
214
|
+
import httpx
|
|
215
|
+
|
|
216
|
+
parsed = urllib.parse.urlparse(url)
|
|
217
|
+
proxy = _proxy_for_url(url)
|
|
218
|
+
key = (f"{parsed.scheme}://{parsed.hostname or ''}", proxy)
|
|
219
|
+
client = self._clients_by_key.get(key)
|
|
220
|
+
if client is not None:
|
|
221
|
+
return client
|
|
222
|
+
|
|
223
|
+
limits = httpx.Limits(
|
|
224
|
+
max_keepalive_connections=self._max_connections,
|
|
225
|
+
max_connections=self._max_connections,
|
|
226
|
+
)
|
|
227
|
+
kwargs: dict[str, Any] = {
|
|
228
|
+
"http2": True,
|
|
229
|
+
"limits": limits,
|
|
230
|
+
"timeout": None, # per-request timeout passed to .post()
|
|
231
|
+
"trust_env": False, # proxy resolution handled by _proxy_for_url
|
|
232
|
+
}
|
|
233
|
+
if proxy:
|
|
234
|
+
kwargs["proxy"] = proxy
|
|
235
|
+
if self._transport_factory is not None:
|
|
236
|
+
kwargs["transport"] = self._transport_factory(proxy=proxy)
|
|
237
|
+
client = httpx.Client(**kwargs)
|
|
238
|
+
self._clients_by_key[key] = client
|
|
239
|
+
return client
|
|
240
|
+
|
|
241
|
+
def post_json(
|
|
242
|
+
self,
|
|
243
|
+
url: str,
|
|
244
|
+
body: dict[str, Any],
|
|
245
|
+
timeout: float,
|
|
246
|
+
) -> tuple[int, bytes]:
|
|
247
|
+
"""POST ``body`` as JSON and return ``(status_code, body_bytes)``; only network errors raise.
|
|
248
|
+
|
|
249
|
+
Args:
|
|
250
|
+
url: Online Service endpoint URL.
|
|
251
|
+
body: JSON-serializable payload.
|
|
252
|
+
timeout: Per-request timeout in seconds.
|
|
253
|
+
|
|
254
|
+
Returns:
|
|
255
|
+
``(status_code, body_bytes)`` from the server response.
|
|
256
|
+
|
|
257
|
+
Raises:
|
|
258
|
+
RuntimeError: When the client has been closed.
|
|
259
|
+
SnowflakeMLException: On transport errors or unresolvable authentication.
|
|
260
|
+
"""
|
|
261
|
+
if self._closed:
|
|
262
|
+
raise RuntimeError("OnlineServiceHttpClient is closed")
|
|
263
|
+
|
|
264
|
+
import httpx
|
|
265
|
+
|
|
266
|
+
payload = json.dumps(body).encode("utf-8")
|
|
267
|
+
headers = self._build_auth_headers(url)
|
|
268
|
+
client = self._client_for_url(url)
|
|
269
|
+
|
|
270
|
+
try:
|
|
271
|
+
resp = client.post(url, content=payload, headers=headers, timeout=httpx.Timeout(timeout))
|
|
272
|
+
except (httpx.HTTPError, OSError) as e:
|
|
273
|
+
raise snowml_exceptions.SnowflakeMLException(
|
|
274
|
+
error_code=error_codes.INTERNAL_SNOWFLAKE_API_ERROR,
|
|
275
|
+
original_exception=RuntimeError(f"Online Service is unreachable: {e}"),
|
|
276
|
+
) from e
|
|
277
|
+
|
|
278
|
+
parsed = urllib.parse.urlparse(url)
|
|
279
|
+
origin = f"{parsed.scheme}://{parsed.hostname or ''}"
|
|
280
|
+
if origin not in self._http2_logged_for_origin:
|
|
281
|
+
self._http2_logged_for_origin.add(origin)
|
|
282
|
+
logger.info(
|
|
283
|
+
"Online Service HTTP negotiated %s for origin %s",
|
|
284
|
+
getattr(resp, "http_version", "unknown"),
|
|
285
|
+
origin,
|
|
286
|
+
)
|
|
287
|
+
|
|
288
|
+
return int(resp.status_code), resp.content
|
|
289
|
+
|
|
290
|
+
def close(self) -> None:
|
|
291
|
+
"""Close all underlying ``httpx.Client`` instances. Idempotent."""
|
|
292
|
+
if self._closed:
|
|
293
|
+
return
|
|
294
|
+
self._closed = True
|
|
295
|
+
for client in self._clients_by_key.values():
|
|
296
|
+
try:
|
|
297
|
+
client.close()
|
|
298
|
+
except Exception: # noqa: BLE001 - best-effort close, never raise from cleanup
|
|
299
|
+
logger.debug("OnlineServiceHttpClient close suppressed", exc_info=True)
|
|
300
|
+
self._clients_by_key.clear()
|