snowflake-ml-python 1.8.5__tar.gz → 1.9.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.8.5 → snowflake_ml_python-1.9.0}/CHANGELOG.md +63 -18
- {snowflake_ml_python-1.8.5/snowflake_ml_python.egg-info → snowflake_ml_python-1.9.0}/PKG-INFO +64 -19
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/telemetry.py +6 -9
- snowflake_ml_python-1.9.0/snowflake/ml/_internal/utils/connection_params.py +196 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/identifier.py +1 -1
- snowflake_ml_python-1.9.0/snowflake/ml/_internal/utils/mixins.py +61 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/__init__.py +2 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/constants.py +3 -2
- snowflake_ml_python-1.9.0/snowflake/ml/jobs/_utils/function_payload_utils.py +43 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/interop_utils.py +63 -4
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/payload_utils.py +89 -40
- snowflake_ml_python-1.9.0/snowflake/ml/jobs/_utils/query_helper.py +9 -0
- snowflake_ml_python-1.9.0/snowflake/ml/jobs/_utils/scripts/constants.py +26 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +8 -26
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/spec_utils.py +29 -5
- snowflake_ml_python-1.9.0/snowflake/ml/jobs/_utils/stage_utils.py +119 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/types.py +5 -1
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/decorators.py +20 -28
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/job.py +197 -61
- snowflake_ml_python-1.9.0/snowflake/ml/jobs/manager.py +542 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/model/model_impl.py +58 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/model/model_version_impl.py +90 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/ops/model_ops.py +18 -6
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/ops/service_ops.py +23 -6
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +2 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/sql/service.py +68 -20
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/sql/stage.py +5 -2
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +38 -10
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_env/model_env.py +35 -27
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +5 -1
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +103 -73
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +3 -1
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/core.py +24 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/snowpark_handler.py +55 -3
- snowflake_ml_python-1.9.0/snowflake/ml/model/target_platform.py +11 -0
- snowflake_ml_python-1.9.0/snowflake/ml/model/task.py +9 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/type_hints.py +5 -13
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/metrics/metrics_utils.py +2 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/explain_visualize.py +2 -2
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/model_monitor.py +0 -4
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/registry/_manager/model_manager.py +30 -15
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/registry/registry.py +144 -47
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/utils/connection_params.py +1 -1
- snowflake_ml_python-1.9.0/snowflake/ml/utils/html_utils.py +263 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0/snowflake_ml_python.egg-info}/PKG-INFO +64 -19
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake_ml_python.egg-info/SOURCES.txt +8 -1
- snowflake_ml_python-1.8.5/snowflake/ml/jobs/_utils/scripts/constants.py +0 -10
- snowflake_ml_python-1.8.5/snowflake/ml/jobs/manager.py +0 -410
- snowflake_ml_python-1.8.5/snowflake/ml/monitoring/model_monitor_version.py +0 -1
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/README.md +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/pyproject.toml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/feature_store.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/feature_store/feature_view.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake_ml_python.egg-info/requires.txt +0 -0
- {snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,5 +1,48 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
## 1.9.0
|
4
|
+
|
5
|
+
### Bug Fixes
|
6
|
+
|
7
|
+
- Registry: Fixed bug causing snowpark to pandas dataframe conversion to fail when `QUOTED_IDENTIFIERS_IGNORE_CASE`
|
8
|
+
parameter is enabled
|
9
|
+
- Registry: Fixed duplicate UserWarning logs during model packaging
|
10
|
+
|
11
|
+
### Behavior Changes
|
12
|
+
|
13
|
+
- ML Job: The `list_jobs()` API has been modified. The `scope` parameter has been removed,
|
14
|
+
optional `database` and `schema` parameters have been added, the return type has changed
|
15
|
+
from `snowpark.DataFrame` to `pandas.DataFrame`, and the returned columns have been updated
|
16
|
+
to `name`, `status`, `message`, `database_name`, `schema_name`, `owner`, `compute_pool`,
|
17
|
+
`target_instances`, `created_time`, and `completed_time`.
|
18
|
+
- Registry: Set `relax_version` to false when pip_requirements are specified while logging model
|
19
|
+
- Registry: UserWarning will now be raised based on specified target_platforms (addresses spurious warnings)
|
20
|
+
|
21
|
+
### New Features
|
22
|
+
|
23
|
+
- Registry: `target_platforms` supports `TargetPlatformMode`: `WAREHOUSE_ONLY`, `SNOWPARK_CONTAINER_SERVICES_ONLY`,
|
24
|
+
or `BOTH_WAREHOUSE_AND_SNOWPARK_CONTAINER_SERVICES`.
|
25
|
+
- Registry: Introduce `snowflake.ml.model.target_platform.TargetPlatform`, target platform constants, and
|
26
|
+
`snowflake.ml.model.task.Task`.
|
27
|
+
- ML Job: Single-node ML Jobs are now in GA. Multi-node support is now in PuPr
|
28
|
+
- Moved less frequently used job submission parameters to `**kwargs`
|
29
|
+
- Platform metrics are now enabled by default
|
30
|
+
- `list_jobs()` behavior changed, see [Behavior Changes](#behavior-changes) for more info
|
31
|
+
|
32
|
+
## 1.8.6
|
33
|
+
|
34
|
+
### Bug Fixes
|
35
|
+
|
36
|
+
- Fixed fatal errors from internal telemetry wrappers.
|
37
|
+
|
38
|
+
### New Features
|
39
|
+
|
40
|
+
- Registry: Add service container info to logs.
|
41
|
+
- ML Job (PuPr): Add new `submit_from_stage()` API for submitting a payload from an existing stage path.
|
42
|
+
- ML Job (PuPr): Add support for `snowpark.Session` objects in the argument list of
|
43
|
+
`@remote` decorated functions. `Session` object will be injected from context in
|
44
|
+
the job execution environment.
|
45
|
+
|
3
46
|
## 1.8.5
|
4
47
|
|
5
48
|
### Bug Fixes
|
@@ -9,16 +52,21 @@
|
|
9
52
|
- Explainability: bump minimum streamlit version down to 1.30
|
10
53
|
- Modeling: Make XGBoost a required dependency (xgboost is not a required dependency in snowflake-ml-python 1.8.4).
|
11
54
|
|
12
|
-
###
|
55
|
+
### Behavior Changes
|
13
56
|
|
14
|
-
- ML Job: Rename argument `num_instances` to `target_instances` in job submission APIs and
|
57
|
+
- ML Job (Multi-node PrPr): Rename argument `num_instances` to `target_instances` in job submission APIs and
|
15
58
|
change type from `Optional[int]` to `int`
|
16
59
|
|
17
60
|
### New Features
|
18
61
|
|
19
62
|
- Registry: No longer checks if the snowflake-ml-python version is available in the Snowflake Conda channel when logging
|
20
63
|
an SPCS-only model.
|
21
|
-
- ML Job: Add `min_instances` argument to the job decorator to allow waiting for workers to be ready.
|
64
|
+
- ML Job (PuPr): Add `min_instances` argument to the job decorator to allow waiting for workers to be ready.
|
65
|
+
- ML Job (PuPr): Adjust polling behavior to reduce number of SQL calls.
|
66
|
+
|
67
|
+
### Deprecations
|
68
|
+
|
69
|
+
- `SnowflakeLoginOptions` is deprecated and will be removed in a future release.
|
22
70
|
|
23
71
|
## 1.8.4 (2025-05-12)
|
24
72
|
|
@@ -29,32 +77,29 @@
|
|
29
77
|
- Registry: Fixed a bug when logging pytroch and tensorflow models that caused
|
30
78
|
`UnboundLocalError: local variable 'multiple_inputs' referenced before assignment`.
|
31
79
|
|
32
|
-
###
|
80
|
+
### Behavior Changes
|
33
81
|
|
34
|
-
- ML Job
|
35
|
-
|
82
|
+
- ML Job (PuPr) Updated property `id` to be fully qualified name; Introduced new property `name`
|
83
|
+
to represent the ML Job name
|
84
|
+
- ML Job (PuPr) Modified `list_jobs()` to return ML Job `name` instead of `id`
|
36
85
|
- Registry: Error in `log_model` if `enable_explainability` is True and model is only deployed to
|
37
86
|
Snowpark Container Services, instead of just user warning.
|
38
87
|
|
39
88
|
### New Features
|
40
89
|
|
41
|
-
- ML Job: Extend `@remote` function decorator, `submit_file()` and `submit_directory()` to accept `database` and
|
90
|
+
- ML Job (PuPr): Extend `@remote` function decorator, `submit_file()` and `submit_directory()` to accept `database` and
|
42
91
|
`schema` parameters
|
43
|
-
- ML Job: Support querying by fully qualified name in `get_job()`
|
92
|
+
- ML Job (PuPr): Support querying by fully qualified name in `get_job()`
|
44
93
|
- Explainability: Added visualization functions to `snowflake.ml.monitoring` to plot explanations in notebooks.
|
45
94
|
- Explainability: Support explain for categorical transforms for sklearn pipeline
|
46
95
|
- Support categorical type for `xgboost.DMatrix` inputs.
|
47
96
|
|
48
97
|
## 1.8.3
|
49
98
|
|
50
|
-
### Bug Fixes
|
51
|
-
|
52
|
-
### Behavior Change
|
53
|
-
|
54
99
|
### New Features
|
55
100
|
|
56
101
|
- Registry: Default to the runtime cuda version if available when logging a GPU model in Container Runtime.
|
57
|
-
- ML Job: Added `as_list` argument to `MLJob.get_logs()` to enable retrieving logs
|
102
|
+
- ML Job (PuPr): Added `as_list` argument to `MLJob.get_logs()` to enable retrieving logs
|
58
103
|
as a list of strings
|
59
104
|
- Registry: Support `ModelVersion.run_job` to run inference with a single-node Snowpark Container Services job.
|
60
105
|
- DataConnector: Removed PrPr decorators
|
@@ -65,11 +110,11 @@
|
|
65
110
|
### New Features
|
66
111
|
|
67
112
|
- ML Job now available as a PuPr feature
|
68
|
-
-
|
69
|
-
|
70
|
-
|
71
|
-
-
|
72
|
-
|
113
|
+
- Add ability to retrieve results for `@remote` decorated functions using
|
114
|
+
new `MLJobWithResult.result()` API, which will return the unpickled result
|
115
|
+
or raise an exception if the job execution failed.
|
116
|
+
- Pre-created Snowpark Session is now available inside job payloads using
|
117
|
+
`snowflake.snowpark.context.get_active_session()`
|
73
118
|
- Registry: Introducing `save_location` to `log_model` using the `options` argument.
|
74
119
|
User's can provide the path to write the model version's files that get stored in Snowflake's stage.
|
75
120
|
|
{snowflake_ml_python-1.8.5/snowflake_ml_python.egg-info → snowflake_ml_python-1.9.0}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: snowflake-ml-python
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.9.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:
|
@@ -408,6 +408,49 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
408
408
|
|
409
409
|
# Release History
|
410
410
|
|
411
|
+
## 1.9.0
|
412
|
+
|
413
|
+
### Bug Fixes
|
414
|
+
|
415
|
+
- Registry: Fixed bug causing snowpark to pandas dataframe conversion to fail when `QUOTED_IDENTIFIERS_IGNORE_CASE`
|
416
|
+
parameter is enabled
|
417
|
+
- Registry: Fixed duplicate UserWarning logs during model packaging
|
418
|
+
|
419
|
+
### Behavior Changes
|
420
|
+
|
421
|
+
- ML Job: The `list_jobs()` API has been modified. The `scope` parameter has been removed,
|
422
|
+
optional `database` and `schema` parameters have been added, the return type has changed
|
423
|
+
from `snowpark.DataFrame` to `pandas.DataFrame`, and the returned columns have been updated
|
424
|
+
to `name`, `status`, `message`, `database_name`, `schema_name`, `owner`, `compute_pool`,
|
425
|
+
`target_instances`, `created_time`, and `completed_time`.
|
426
|
+
- Registry: Set `relax_version` to false when pip_requirements are specified while logging model
|
427
|
+
- Registry: UserWarning will now be raised based on specified target_platforms (addresses spurious warnings)
|
428
|
+
|
429
|
+
### New Features
|
430
|
+
|
431
|
+
- Registry: `target_platforms` supports `TargetPlatformMode`: `WAREHOUSE_ONLY`, `SNOWPARK_CONTAINER_SERVICES_ONLY`,
|
432
|
+
or `BOTH_WAREHOUSE_AND_SNOWPARK_CONTAINER_SERVICES`.
|
433
|
+
- Registry: Introduce `snowflake.ml.model.target_platform.TargetPlatform`, target platform constants, and
|
434
|
+
`snowflake.ml.model.task.Task`.
|
435
|
+
- ML Job: Single-node ML Jobs are now in GA. Multi-node support is now in PuPr
|
436
|
+
- Moved less frequently used job submission parameters to `**kwargs`
|
437
|
+
- Platform metrics are now enabled by default
|
438
|
+
- `list_jobs()` behavior changed, see [Behavior Changes](#behavior-changes) for more info
|
439
|
+
|
440
|
+
## 1.8.6
|
441
|
+
|
442
|
+
### Bug Fixes
|
443
|
+
|
444
|
+
- Fixed fatal errors from internal telemetry wrappers.
|
445
|
+
|
446
|
+
### New Features
|
447
|
+
|
448
|
+
- Registry: Add service container info to logs.
|
449
|
+
- ML Job (PuPr): Add new `submit_from_stage()` API for submitting a payload from an existing stage path.
|
450
|
+
- ML Job (PuPr): Add support for `snowpark.Session` objects in the argument list of
|
451
|
+
`@remote` decorated functions. `Session` object will be injected from context in
|
452
|
+
the job execution environment.
|
453
|
+
|
411
454
|
## 1.8.5
|
412
455
|
|
413
456
|
### Bug Fixes
|
@@ -417,16 +460,21 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
417
460
|
- Explainability: bump minimum streamlit version down to 1.30
|
418
461
|
- Modeling: Make XGBoost a required dependency (xgboost is not a required dependency in snowflake-ml-python 1.8.4).
|
419
462
|
|
420
|
-
###
|
463
|
+
### Behavior Changes
|
421
464
|
|
422
|
-
- ML Job: Rename argument `num_instances` to `target_instances` in job submission APIs and
|
465
|
+
- ML Job (Multi-node PrPr): Rename argument `num_instances` to `target_instances` in job submission APIs and
|
423
466
|
change type from `Optional[int]` to `int`
|
424
467
|
|
425
468
|
### New Features
|
426
469
|
|
427
470
|
- Registry: No longer checks if the snowflake-ml-python version is available in the Snowflake Conda channel when logging
|
428
471
|
an SPCS-only model.
|
429
|
-
- ML Job: Add `min_instances` argument to the job decorator to allow waiting for workers to be ready.
|
472
|
+
- ML Job (PuPr): Add `min_instances` argument to the job decorator to allow waiting for workers to be ready.
|
473
|
+
- ML Job (PuPr): Adjust polling behavior to reduce number of SQL calls.
|
474
|
+
|
475
|
+
### Deprecations
|
476
|
+
|
477
|
+
- `SnowflakeLoginOptions` is deprecated and will be removed in a future release.
|
430
478
|
|
431
479
|
## 1.8.4 (2025-05-12)
|
432
480
|
|
@@ -437,32 +485,29 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
437
485
|
- Registry: Fixed a bug when logging pytroch and tensorflow models that caused
|
438
486
|
`UnboundLocalError: local variable 'multiple_inputs' referenced before assignment`.
|
439
487
|
|
440
|
-
###
|
488
|
+
### Behavior Changes
|
441
489
|
|
442
|
-
- ML Job
|
443
|
-
|
490
|
+
- ML Job (PuPr) Updated property `id` to be fully qualified name; Introduced new property `name`
|
491
|
+
to represent the ML Job name
|
492
|
+
- ML Job (PuPr) Modified `list_jobs()` to return ML Job `name` instead of `id`
|
444
493
|
- Registry: Error in `log_model` if `enable_explainability` is True and model is only deployed to
|
445
494
|
Snowpark Container Services, instead of just user warning.
|
446
495
|
|
447
496
|
### New Features
|
448
497
|
|
449
|
-
- ML Job: Extend `@remote` function decorator, `submit_file()` and `submit_directory()` to accept `database` and
|
498
|
+
- ML Job (PuPr): Extend `@remote` function decorator, `submit_file()` and `submit_directory()` to accept `database` and
|
450
499
|
`schema` parameters
|
451
|
-
- ML Job: Support querying by fully qualified name in `get_job()`
|
500
|
+
- ML Job (PuPr): Support querying by fully qualified name in `get_job()`
|
452
501
|
- Explainability: Added visualization functions to `snowflake.ml.monitoring` to plot explanations in notebooks.
|
453
502
|
- Explainability: Support explain for categorical transforms for sklearn pipeline
|
454
503
|
- Support categorical type for `xgboost.DMatrix` inputs.
|
455
504
|
|
456
505
|
## 1.8.3
|
457
506
|
|
458
|
-
### Bug Fixes
|
459
|
-
|
460
|
-
### Behavior Change
|
461
|
-
|
462
507
|
### New Features
|
463
508
|
|
464
509
|
- Registry: Default to the runtime cuda version if available when logging a GPU model in Container Runtime.
|
465
|
-
- ML Job: Added `as_list` argument to `MLJob.get_logs()` to enable retrieving logs
|
510
|
+
- ML Job (PuPr): Added `as_list` argument to `MLJob.get_logs()` to enable retrieving logs
|
466
511
|
as a list of strings
|
467
512
|
- Registry: Support `ModelVersion.run_job` to run inference with a single-node Snowpark Container Services job.
|
468
513
|
- DataConnector: Removed PrPr decorators
|
@@ -473,11 +518,11 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
473
518
|
### New Features
|
474
519
|
|
475
520
|
- ML Job now available as a PuPr feature
|
476
|
-
-
|
477
|
-
|
478
|
-
|
479
|
-
-
|
480
|
-
|
521
|
+
- Add ability to retrieve results for `@remote` decorated functions using
|
522
|
+
new `MLJobWithResult.result()` API, which will return the unpickled result
|
523
|
+
or raise an exception if the job execution failed.
|
524
|
+
- Pre-created Snowpark Session is now available inside job payloads using
|
525
|
+
`snowflake.snowpark.context.get_active_session()`
|
481
526
|
- Registry: Introducing `save_location` to `log_model` using the `options` argument.
|
482
527
|
User's can provide the path to write the model version's files that get stored in Snowflake's stage.
|
483
528
|
|
@@ -411,16 +411,13 @@ def send_custom_usage(
|
|
411
411
|
**kwargs: Any,
|
412
412
|
) -> None:
|
413
413
|
conn = _get_snowflake_connection()
|
414
|
-
if conn is None:
|
415
|
-
raise ValueError(
|
416
|
-
"""Snowflake connection is required to send custom telemetry. This means there
|
417
|
-
must be at least one active session, or that telemetry is being sent from within an SPCS service."""
|
418
|
-
)
|
419
414
|
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
415
|
+
# Send telemetry if Snowflake connection is available.
|
416
|
+
if conn is not None:
|
417
|
+
client = _SourceTelemetryClient(conn=conn, project=project, subproject=subproject)
|
418
|
+
common_metrics = client._create_basic_telemetry_data(telemetry_type=telemetry_type)
|
419
|
+
data = {**common_metrics, TelemetryField.KEY_DATA.value: data, **kwargs}
|
420
|
+
client._send(msg=data)
|
424
421
|
|
425
422
|
|
426
423
|
def send_api_usage_telemetry(
|
@@ -0,0 +1,196 @@
|
|
1
|
+
import configparser
|
2
|
+
import os
|
3
|
+
from typing import Optional, Union
|
4
|
+
|
5
|
+
from absl import logging
|
6
|
+
from cryptography.hazmat import backends
|
7
|
+
from cryptography.hazmat.primitives import serialization
|
8
|
+
|
9
|
+
_DEFAULT_CONNECTION_FILE = "~/.snowsql/config"
|
10
|
+
|
11
|
+
|
12
|
+
def _read_token(token_file: str = "") -> str:
|
13
|
+
"""
|
14
|
+
Reads token from environment or file provided.
|
15
|
+
|
16
|
+
First tries to read the token from environment variable
|
17
|
+
(`SNOWFLAKE_TOKEN`) followed by the token file.
|
18
|
+
Both the options are tried out in SnowServices.
|
19
|
+
|
20
|
+
Args:
|
21
|
+
token_file: File from which token needs to be read. Optional.
|
22
|
+
|
23
|
+
Returns:
|
24
|
+
the token.
|
25
|
+
"""
|
26
|
+
token = os.getenv("SNOWFLAKE_TOKEN", "")
|
27
|
+
if token:
|
28
|
+
return token
|
29
|
+
if token_file and os.path.exists(token_file):
|
30
|
+
with open(token_file) as f:
|
31
|
+
token = f.read()
|
32
|
+
return token
|
33
|
+
|
34
|
+
|
35
|
+
_ENCRYPTED_PKCS8_PK_HEADER = b"-----BEGIN ENCRYPTED PRIVATE KEY-----"
|
36
|
+
_UNENCRYPTED_PKCS8_PK_HEADER = b"-----BEGIN PRIVATE KEY-----"
|
37
|
+
|
38
|
+
|
39
|
+
def _load_pem_to_der(private_key_path: str) -> bytes:
|
40
|
+
"""Given a private key file path (in PEM format), decode key data into DER format."""
|
41
|
+
with open(private_key_path, "rb") as f:
|
42
|
+
private_key_pem = f.read()
|
43
|
+
private_key_passphrase: Optional[str] = os.getenv("SNOWFLAKE_PRIVATE_KEY_PASSPHRASE", None)
|
44
|
+
|
45
|
+
# Only PKCS#8 format key will be accepted. However, openssl
|
46
|
+
# transparently handle PKCS#8 and PKCS#1 format (by some fallback
|
47
|
+
# logic) and their is no function to distinguish between them. By
|
48
|
+
# reading openssl source code, apparently they also relies on header
|
49
|
+
# to determine if give bytes is PKCS#8 format or not
|
50
|
+
if not private_key_pem.startswith(_ENCRYPTED_PKCS8_PK_HEADER) and not private_key_pem.startswith(
|
51
|
+
_UNENCRYPTED_PKCS8_PK_HEADER
|
52
|
+
):
|
53
|
+
raise Exception("Private key provided is not in PKCS#8 format. Please use correct format.")
|
54
|
+
|
55
|
+
if private_key_pem.startswith(_ENCRYPTED_PKCS8_PK_HEADER) and private_key_passphrase is None:
|
56
|
+
raise Exception(
|
57
|
+
"Private key is encrypted but passphrase could not be found. "
|
58
|
+
"Please set SNOWFLAKE_PRIVATE_KEY_PASSPHRASE env variable."
|
59
|
+
)
|
60
|
+
|
61
|
+
if private_key_pem.startswith(_UNENCRYPTED_PKCS8_PK_HEADER):
|
62
|
+
private_key_passphrase = None
|
63
|
+
|
64
|
+
private_key = serialization.load_pem_private_key(
|
65
|
+
private_key_pem,
|
66
|
+
str.encode(private_key_passphrase) if private_key_passphrase is not None else private_key_passphrase,
|
67
|
+
backends.default_backend(),
|
68
|
+
)
|
69
|
+
|
70
|
+
return private_key.private_bytes(
|
71
|
+
encoding=serialization.Encoding.DER,
|
72
|
+
format=serialization.PrivateFormat.PKCS8,
|
73
|
+
encryption_algorithm=serialization.NoEncryption(),
|
74
|
+
)
|
75
|
+
|
76
|
+
|
77
|
+
def _connection_properties_from_env() -> dict[str, str]:
|
78
|
+
"""Returns a dict with all possible login related env variables."""
|
79
|
+
sf_conn_prop = {
|
80
|
+
# Mandatory fields
|
81
|
+
"account": os.environ["SNOWFLAKE_ACCOUNT"],
|
82
|
+
"database": os.environ["SNOWFLAKE_DATABASE"],
|
83
|
+
# With a default value
|
84
|
+
"token_file": os.getenv("SNOWFLAKE_TOKEN_FILE", "/snowflake/session/token"),
|
85
|
+
"ssl": os.getenv("SNOWFLAKE_SSL", "on"),
|
86
|
+
"protocol": os.getenv("SNOWFLAKE_PROTOCOL", "https"),
|
87
|
+
}
|
88
|
+
# With empty default value
|
89
|
+
for key, env_var in {
|
90
|
+
"user": "SNOWFLAKE_USER",
|
91
|
+
"authenticator": "SNOWFLAKE_AUTHENTICATOR",
|
92
|
+
"password": "SNOWFLAKE_PASSWORD",
|
93
|
+
"host": "SNOWFLAKE_HOST",
|
94
|
+
"port": "SNOWFLAKE_PORT",
|
95
|
+
"schema": "SNOWFLAKE_SCHEMA",
|
96
|
+
"warehouse": "SNOWFLAKE_WAREHOUSE",
|
97
|
+
"private_key_path": "SNOWFLAKE_PRIVATE_KEY_PATH",
|
98
|
+
}.items():
|
99
|
+
value = os.getenv(env_var, "")
|
100
|
+
if value:
|
101
|
+
sf_conn_prop[key] = value
|
102
|
+
return sf_conn_prop
|
103
|
+
|
104
|
+
|
105
|
+
def _load_from_snowsql_config_file(connection_name: str, login_file: str = "") -> dict[str, str]:
|
106
|
+
"""Loads the dictionary from snowsql config file."""
|
107
|
+
snowsql_config_file = login_file if login_file else os.path.expanduser(_DEFAULT_CONNECTION_FILE)
|
108
|
+
if not os.path.exists(snowsql_config_file):
|
109
|
+
logging.error(f"Connection name given but snowsql config file is not found at: {snowsql_config_file}")
|
110
|
+
raise Exception("Snowflake SnowSQL config not found.")
|
111
|
+
|
112
|
+
config = configparser.ConfigParser(inline_comment_prefixes="#")
|
113
|
+
|
114
|
+
snowflake_connection_name = os.getenv("SNOWFLAKE_CONNECTION_NAME")
|
115
|
+
if snowflake_connection_name is not None:
|
116
|
+
connection_name = snowflake_connection_name
|
117
|
+
|
118
|
+
if connection_name:
|
119
|
+
if not connection_name.startswith("connections."):
|
120
|
+
connection_name = "connections." + connection_name
|
121
|
+
else:
|
122
|
+
# See https://docs.snowflake.com/en/user-guide/snowsql-start.html#configuring-default-connection-settings
|
123
|
+
connection_name = "connections"
|
124
|
+
|
125
|
+
logging.info(f"Reading {snowsql_config_file} for connection parameters defined as {connection_name}")
|
126
|
+
config.read(snowsql_config_file)
|
127
|
+
conn_params = dict(config[connection_name])
|
128
|
+
# Remap names to appropriate args in Python Connector API
|
129
|
+
# Note: "dbname" should become "database"
|
130
|
+
conn_params = {k.replace("name", ""): v.strip('"') for k, v in conn_params.items()}
|
131
|
+
if "db" in conn_params:
|
132
|
+
conn_params["database"] = conn_params["db"]
|
133
|
+
del conn_params["db"]
|
134
|
+
return conn_params
|
135
|
+
|
136
|
+
|
137
|
+
def SnowflakeLoginOptions(connection_name: str = "", login_file: Optional[str] = None) -> dict[str, Union[str, bytes]]:
|
138
|
+
"""Returns a dict that can be used directly into snowflake python connector or Snowpark session config.
|
139
|
+
|
140
|
+
NOTE: Token/Auth information is sideloaded in all cases above, if provided in following order:
|
141
|
+
1. If SNOWFLAKE_TOKEN is defined in the environment, it will be used.
|
142
|
+
2. If SNOWFLAKE_TOKEN_FILE is defined in the environment and file matching the value found, content of the file
|
143
|
+
will be used.
|
144
|
+
|
145
|
+
If token is found, username, password will be reset and 'authenticator' will be set to 'oauth'.
|
146
|
+
|
147
|
+
Python Connector:
|
148
|
+
>> ctx = snowflake.connector.connect(**(SnowflakeLoginOptions()))
|
149
|
+
|
150
|
+
Snowpark Session:
|
151
|
+
>> session = Session.builder.configs(SnowflakeLoginOptions()).create()
|
152
|
+
|
153
|
+
Usage Note:
|
154
|
+
Ideally one should have a snowsql config file. Read more here:
|
155
|
+
https://docs.snowflake.com/en/user-guide/snowsql-start.html#configuring-default-connection-settings
|
156
|
+
|
157
|
+
If snowsql config file does not exist, it tries auth from env variables.
|
158
|
+
|
159
|
+
Args:
|
160
|
+
connection_name: Name of the connection to look for inside the config file. If environment variable
|
161
|
+
SNOWFLAKE_CONNECTION_NAME is provided, it will override the input connection_name.
|
162
|
+
login_file: If provided, this is used as config file instead of default one (_DEFAULT_CONNECTION_FILE).
|
163
|
+
|
164
|
+
Returns:
|
165
|
+
A dict with connection parameters.
|
166
|
+
|
167
|
+
Raises:
|
168
|
+
Exception: if none of config file and environment variable are present.
|
169
|
+
"""
|
170
|
+
conn_prop: dict[str, Union[str, bytes]] = {}
|
171
|
+
login_file = login_file or os.path.expanduser(_DEFAULT_CONNECTION_FILE)
|
172
|
+
# If login file exists, use this exclusively.
|
173
|
+
if os.path.exists(login_file):
|
174
|
+
conn_prop = {**(_load_from_snowsql_config_file(connection_name, login_file))}
|
175
|
+
else:
|
176
|
+
# If environment exists for SNOWFLAKE_ACCOUNT, assume everything
|
177
|
+
# comes from environment. Mixing it not allowed.
|
178
|
+
account = os.getenv("SNOWFLAKE_ACCOUNT", "")
|
179
|
+
if account:
|
180
|
+
conn_prop = {**_connection_properties_from_env()}
|
181
|
+
else:
|
182
|
+
raise Exception("Snowflake credential is neither set in env nor a login file was provided.")
|
183
|
+
|
184
|
+
# Token, if specified, is always side-loaded in all cases.
|
185
|
+
token = _read_token(str(conn_prop["token_file"]) if "token_file" in conn_prop else "")
|
186
|
+
if token:
|
187
|
+
conn_prop["token"] = token
|
188
|
+
if "authenticator" not in conn_prop or conn_prop["authenticator"]:
|
189
|
+
conn_prop["authenticator"] = "oauth"
|
190
|
+
elif "private_key_path" in conn_prop and "private_key" not in conn_prop:
|
191
|
+
conn_prop["private_key"] = _load_pem_to_der(str(conn_prop["private_key_path"]))
|
192
|
+
|
193
|
+
if "ssl" in conn_prop and conn_prop["ssl"].lower() == "off":
|
194
|
+
conn_prop["protocol"] = "http"
|
195
|
+
|
196
|
+
return conn_prop
|
{snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/_internal/utils/identifier.py
RENAMED
@@ -240,7 +240,7 @@ def get_schema_level_object_identifier(
|
|
240
240
|
"""
|
241
241
|
|
242
242
|
for identifier in (db, schema, object_name):
|
243
|
-
if identifier is not None and SF_IDENTIFIER_RE.
|
243
|
+
if identifier is not None and SF_IDENTIFIER_RE.fullmatch(identifier) is None:
|
244
244
|
raise ValueError(f"Invalid identifier {identifier}")
|
245
245
|
|
246
246
|
if others is None:
|
@@ -0,0 +1,61 @@
|
|
1
|
+
from typing import Any, Optional
|
2
|
+
|
3
|
+
from snowflake.ml._internal.utils import identifier
|
4
|
+
from snowflake.snowpark import session
|
5
|
+
|
6
|
+
|
7
|
+
class SerializableSessionMixin:
|
8
|
+
"""Mixin that provides pickling capabilities for objects with Snowpark sessions."""
|
9
|
+
|
10
|
+
def __getstate__(self) -> dict[str, Any]:
|
11
|
+
"""Customize pickling to exclude non-serializable session and related components."""
|
12
|
+
state = self.__dict__.copy()
|
13
|
+
|
14
|
+
# Save session metadata for validation during unpickling
|
15
|
+
if hasattr(self, "_session") and self._session is not None:
|
16
|
+
try:
|
17
|
+
state["__session-account__"] = self._session.get_current_account()
|
18
|
+
state["__session-role__"] = self._session.get_current_role()
|
19
|
+
state["__session-database__"] = self._session.get_current_database()
|
20
|
+
state["__session-schema__"] = self._session.get_current_schema()
|
21
|
+
except Exception:
|
22
|
+
pass
|
23
|
+
|
24
|
+
state["_session"] = None
|
25
|
+
return state
|
26
|
+
|
27
|
+
def __setstate__(self, state: dict[str, Any]) -> None:
|
28
|
+
"""Restore session from context during unpickling."""
|
29
|
+
saved_account = state.pop("__session-account__", None)
|
30
|
+
saved_role = state.pop("__session-role__", None)
|
31
|
+
saved_database = state.pop("__session-database__", None)
|
32
|
+
saved_schema = state.pop("__session-schema__", None)
|
33
|
+
self.__dict__.update(state)
|
34
|
+
|
35
|
+
if saved_account is not None:
|
36
|
+
|
37
|
+
def identifiers_match(saved: Optional[str], current: Optional[str]) -> bool:
|
38
|
+
saved_resolved = identifier.resolve_identifier(saved) if saved is not None else saved
|
39
|
+
current_resolved = identifier.resolve_identifier(current) if current is not None else current
|
40
|
+
return saved_resolved == current_resolved
|
41
|
+
|
42
|
+
for active_session in session._get_active_sessions():
|
43
|
+
try:
|
44
|
+
current_account = active_session.get_current_account()
|
45
|
+
current_role = active_session.get_current_role()
|
46
|
+
current_database = active_session.get_current_database()
|
47
|
+
current_schema = active_session.get_current_schema()
|
48
|
+
|
49
|
+
if (
|
50
|
+
identifiers_match(saved_account, current_account)
|
51
|
+
and identifiers_match(saved_role, current_role)
|
52
|
+
and identifiers_match(saved_database, current_database)
|
53
|
+
and identifiers_match(saved_schema, current_schema)
|
54
|
+
):
|
55
|
+
self._session = active_session
|
56
|
+
return
|
57
|
+
except Exception:
|
58
|
+
continue
|
59
|
+
|
60
|
+
# No matching session found or no metadata available
|
61
|
+
raise RuntimeError("No active Snowpark session available. Please create a session.")
|
{snowflake_ml_python-1.8.5 → snowflake_ml_python-1.9.0}/snowflake/ml/jobs/_utils/constants.py
RENAMED
@@ -6,6 +6,7 @@ DEFAULT_CONTAINER_NAME = "main"
|
|
6
6
|
PAYLOAD_DIR_ENV_VAR = "MLRS_PAYLOAD_DIR"
|
7
7
|
RESULT_PATH_ENV_VAR = "MLRS_RESULT_PATH"
|
8
8
|
MIN_INSTANCES_ENV_VAR = "MLRS_MIN_INSTANCES"
|
9
|
+
RUNTIME_IMAGE_TAG_ENV_VAR = "MLRS_CONTAINER_IMAGE_TAG"
|
9
10
|
MEMORY_VOLUME_NAME = "dshm"
|
10
11
|
STAGE_VOLUME_NAME = "stage-volume"
|
11
12
|
STAGE_VOLUME_MOUNT_PATH = "/mnt/app"
|
@@ -14,7 +15,7 @@ STAGE_VOLUME_MOUNT_PATH = "/mnt/app"
|
|
14
15
|
DEFAULT_IMAGE_REPO = "/snowflake/images/snowflake_images"
|
15
16
|
DEFAULT_IMAGE_CPU = "st_plat/runtime/x86/runtime_image/snowbooks"
|
16
17
|
DEFAULT_IMAGE_GPU = "st_plat/runtime/x86/generic_gpu/runtime_image/snowbooks"
|
17
|
-
DEFAULT_IMAGE_TAG = "1.
|
18
|
+
DEFAULT_IMAGE_TAG = "1.5.0"
|
18
19
|
DEFAULT_ENTRYPOINT_PATH = "func.py"
|
19
20
|
|
20
21
|
# Percent of container memory to allocate for /dev/shm volume
|
@@ -43,7 +44,7 @@ ENABLE_HEALTH_CHECKS = "false"
|
|
43
44
|
|
44
45
|
# Job status polling constants
|
45
46
|
JOB_POLL_INITIAL_DELAY_SECONDS = 0.1
|
46
|
-
JOB_POLL_MAX_DELAY_SECONDS =
|
47
|
+
JOB_POLL_MAX_DELAY_SECONDS = 30
|
47
48
|
|
48
49
|
# Magic attributes
|
49
50
|
IS_MLJOB_REMOTE_ATTR = "_is_mljob_remote_callable"
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import inspect
|
2
|
+
from typing import Any, Callable, Optional
|
3
|
+
|
4
|
+
from snowflake import snowpark
|
5
|
+
from snowflake.snowpark import context as sp_context
|
6
|
+
|
7
|
+
|
8
|
+
class FunctionPayload:
|
9
|
+
def __init__(
|
10
|
+
self,
|
11
|
+
func: Callable[..., Any],
|
12
|
+
session: Optional[snowpark.Session] = None,
|
13
|
+
session_argument: str = "",
|
14
|
+
*args: Any,
|
15
|
+
**kwargs: Any
|
16
|
+
) -> None:
|
17
|
+
self.function = func
|
18
|
+
self.args = args
|
19
|
+
self.kwargs = kwargs
|
20
|
+
self._session = session
|
21
|
+
self._session_argument = session_argument
|
22
|
+
|
23
|
+
@property
|
24
|
+
def session(self) -> Optional[snowpark.Session]:
|
25
|
+
return self._session
|
26
|
+
|
27
|
+
def __getstate__(self) -> dict[str, Any]:
|
28
|
+
"""Customize pickling to exclude session."""
|
29
|
+
state = self.__dict__.copy()
|
30
|
+
state["_session"] = None
|
31
|
+
return state
|
32
|
+
|
33
|
+
def __setstate__(self, state: dict[str, Any]) -> None:
|
34
|
+
"""Restore session from context during unpickling."""
|
35
|
+
self.__dict__.update(state)
|
36
|
+
self._session = sp_context.get_active_session()
|
37
|
+
|
38
|
+
def __call__(self) -> Any:
|
39
|
+
sig = inspect.signature(self.function)
|
40
|
+
bound = sig.bind_partial(*self.args, **self.kwargs)
|
41
|
+
bound.arguments[self._session_argument] = self._session
|
42
|
+
|
43
|
+
return self.function(*bound.args, **bound.kwargs)
|