snowflake-ml-python 1.39.0__tar.gz → 1.41.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.39.0 → snowflake_ml_python-1.41.0}/CHANGELOG.md +34 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/PKG-INFO +35 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/platform_capabilities.py +13 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/__init__.py +4 -0
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/_compute_fn_validation.py +253 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/aggregation.py +16 -3
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/feature.py +9 -4
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/feature_group.py +1386 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/feature_store.py +2457 -382
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/feature_view.py +567 -58
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/feature_view_append_only_validation.py +147 -0
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/feature_view_refresh_freq.py +29 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/metadata_manager.py +425 -6
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/online_service.py +274 -33
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/realtime_config.py +373 -0
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/realtime_dataset.py +597 -0
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/realtime_dataset_udf.py +101 -0
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/realtime_registration.py +951 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/spec/builder.py +105 -47
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/spec/models.py +5 -1
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/spec/table_schema_evolution.py +119 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/stream_config.py +29 -70
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/stream_source.py +35 -18
- snowflake_ml_python-1.41.0/snowflake/ml/feature_store/streaming_registration.py +1322 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/tile_sql_generator.py +47 -22
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/lineage/lineage_node.py +2 -2
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/model/model_version_impl.py +17 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/ops/service_ops.py +4 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +77 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +29 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +7 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +8 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +7 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +8 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +7 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +8 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_env/model_env.py +26 -11
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +4 -4
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +2 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +53 -0
- snowflake_ml_python-1.41.0/snowflake/ml/model/_packager/model_handlers/huggingface/audio_classification.py +31 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +2 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +5 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +3 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +3 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +3 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +3 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +4 -4
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +13 -4
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +4 -4
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/utils.py +130 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/batch/__init__.py +0 -4
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +33 -10
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake_ml_python.egg-info/PKG-INFO +35 -1
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake_ml_python.egg-info/SOURCES.txt +10 -1
- snowflake_ml_python-1.39.0/snowflake/ml/feature_store/streaming_registration.py +0 -475
- snowflake_ml_python-1.39.0/snowflake/ml/model/_client/model/batch_inference_definition.py +0 -241
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/README.md +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/pyproject.toml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/tee.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/_internal/utils/url.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/request_source.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/results.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/_utils/type_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/job.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/job_definition.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/jobs/manager.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/model/batch_inference_task.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/sql/service.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/code_path.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/compute_pool.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/models/huggingface.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/openai_signatures.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/type_hints.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/model/volatility.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/utils/stage_file.py +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake_ml_python.egg-info/requires.txt +0 -0
- {snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
+
## 1.41.0
|
|
4
|
+
|
|
5
|
+
### New Features
|
|
6
|
+
|
|
7
|
+
* Registry: Extended `ParamSpec` support to MLflow PyFunc, LightGBM, XGBoost, and CatBoost models.
|
|
8
|
+
Parameters declared in the model signature can now be passed at inference time.
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
### Behavior Changes
|
|
13
|
+
|
|
14
|
+
### Deprecations
|
|
15
|
+
|
|
16
|
+
## 1.40.0 (2026-05-19)
|
|
17
|
+
|
|
18
|
+
### New Features
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* Feature Store: `get_feature_view()` now correctly preserves `online_config` for feature views whose
|
|
23
|
+
names require SQL quoting (mixed case or special characters such as a space). Previously the returned
|
|
24
|
+
FeatureView reported `online=False` even when online was enabled at registration, causing
|
|
25
|
+
`read_feature_view(store_type=ONLINE)` to fail with "Online store is not enabled".
|
|
26
|
+
|
|
27
|
+
### Behavior Changes
|
|
28
|
+
|
|
29
|
+
### Deprecations
|
|
30
|
+
|
|
3
31
|
## 1.39.0
|
|
4
32
|
|
|
5
33
|
### New Features
|
|
@@ -32,6 +60,12 @@
|
|
|
32
60
|
|
|
33
61
|
### New Features
|
|
34
62
|
|
|
63
|
+
* Registry: Auto-inferred signatures for HuggingFace pipeline models now include task-specific `ParamSpecs`,
|
|
64
|
+
allowing users to control inference behavior at prediction time via `params`. Generative tasks expose
|
|
65
|
+
GenerationConfig parameters (e.g. `temperature`, `max_new_tokens`, `top_p`); non-generative tasks expose
|
|
66
|
+
their own task-specific parameters (e.g. `top_k` for fill-mask, `aggregation_strategy` for
|
|
67
|
+
zero-shot-classification).
|
|
68
|
+
|
|
35
69
|
### Bug Fixes
|
|
36
70
|
|
|
37
71
|
### Behavior Changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.41.0
|
|
4
4
|
Summary: The machine learning client library that is used for interacting with Snowflake to build machine learning solutions.
|
|
5
5
|
Author-email: "Snowflake, Inc" <support@snowflake.com>
|
|
6
6
|
License:
|
|
@@ -416,6 +416,34 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
416
416
|
|
|
417
417
|
# Release History
|
|
418
418
|
|
|
419
|
+
## 1.41.0
|
|
420
|
+
|
|
421
|
+
### New Features
|
|
422
|
+
|
|
423
|
+
* Registry: Extended `ParamSpec` support to MLflow PyFunc, LightGBM, XGBoost, and CatBoost models.
|
|
424
|
+
Parameters declared in the model signature can now be passed at inference time.
|
|
425
|
+
|
|
426
|
+
### Bug Fixes
|
|
427
|
+
|
|
428
|
+
### Behavior Changes
|
|
429
|
+
|
|
430
|
+
### Deprecations
|
|
431
|
+
|
|
432
|
+
## 1.40.0 (2026-05-19)
|
|
433
|
+
|
|
434
|
+
### New Features
|
|
435
|
+
|
|
436
|
+
### Bug Fixes
|
|
437
|
+
|
|
438
|
+
* Feature Store: `get_feature_view()` now correctly preserves `online_config` for feature views whose
|
|
439
|
+
names require SQL quoting (mixed case or special characters such as a space). Previously the returned
|
|
440
|
+
FeatureView reported `online=False` even when online was enabled at registration, causing
|
|
441
|
+
`read_feature_view(store_type=ONLINE)` to fail with "Online store is not enabled".
|
|
442
|
+
|
|
443
|
+
### Behavior Changes
|
|
444
|
+
|
|
445
|
+
### Deprecations
|
|
446
|
+
|
|
419
447
|
## 1.39.0
|
|
420
448
|
|
|
421
449
|
### New Features
|
|
@@ -448,6 +476,12 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
448
476
|
|
|
449
477
|
### New Features
|
|
450
478
|
|
|
479
|
+
* Registry: Auto-inferred signatures for HuggingFace pipeline models now include task-specific `ParamSpecs`,
|
|
480
|
+
allowing users to control inference behavior at prediction time via `params`. Generative tasks expose
|
|
481
|
+
GenerationConfig parameters (e.g. `temperature`, `max_new_tokens`, `top_p`); non-generative tasks expose
|
|
482
|
+
their own task-specific parameters (e.g. `top_k` for fill-mask, `aggregation_strategy` for
|
|
483
|
+
zero-shot-classification).
|
|
484
|
+
|
|
451
485
|
### Bug Fixes
|
|
452
486
|
|
|
453
487
|
### Behavior Changes
|
|
@@ -19,6 +19,7 @@ LIVE_COMMIT_PARAMETER = "ENABLE_LIVE_VERSION_IN_SDK"
|
|
|
19
19
|
INLINE_DEPLOYMENT_SPEC_PARAMETER = "ENABLE_INLINE_DEPLOYMENT_SPEC_FROM_CLIENT_VERSION"
|
|
20
20
|
SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST = "SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST"
|
|
21
21
|
ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS = "ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS"
|
|
22
|
+
ENABLE_PIP_ONLY_PACKAGING = "ENABLE_PIP_ONLY_PACKAGING"
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
class PlatformCapabilities:
|
|
@@ -82,6 +83,18 @@ class PlatformCapabilities:
|
|
|
82
83
|
def is_model_method_signature_parameters_enabled(self) -> bool:
|
|
83
84
|
return self._get_bool_feature(ENABLE_MODEL_METHOD_SIGNATURE_PARAMETERS, False)
|
|
84
85
|
|
|
86
|
+
def is_pip_only_packaging_enabled(self) -> bool:
|
|
87
|
+
"""Whether pip-only model packaging is enabled for this account.
|
|
88
|
+
|
|
89
|
+
Defaults to enabled when ``ENABLE_PIP_ONLY_PACKAGING`` is absent from
|
|
90
|
+
``SYSTEM$ML_PLATFORM_CAPABILITIES()`` (e.g. older servers). When the
|
|
91
|
+
capability is present, defaults to enabled unless explicitly set to false.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
True if pip-only packaging is enabled for this account; otherwise False.
|
|
95
|
+
"""
|
|
96
|
+
return self._get_bool_feature(ENABLE_PIP_ONLY_PACKAGING, default_value=True)
|
|
97
|
+
|
|
85
98
|
@staticmethod
|
|
86
99
|
def _get_features(session: snowpark_session.Session) -> dict[str, Any]:
|
|
87
100
|
try:
|
{snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/__init__.py
RENAMED
|
@@ -5,6 +5,8 @@ from snowflake.ml._internal import init_utils
|
|
|
5
5
|
from .access_manager import setup_feature_store
|
|
6
6
|
from .feature import Feature
|
|
7
7
|
from .feature_view import RollupConfig
|
|
8
|
+
from .realtime_config import RealtimeConfig
|
|
9
|
+
from .request_source import RequestSource
|
|
8
10
|
from .spec.enums import FeatureAggregationMethod
|
|
9
11
|
from .stream_config import StreamConfig
|
|
10
12
|
from .stream_source import StreamSource
|
|
@@ -19,6 +21,8 @@ __all__ = list(exportable_classes.keys()) + [
|
|
|
19
21
|
"setup_feature_store",
|
|
20
22
|
"Feature",
|
|
21
23
|
"FeatureAggregationMethod",
|
|
24
|
+
"RealtimeConfig",
|
|
25
|
+
"RequestSource",
|
|
22
26
|
"RollupConfig",
|
|
23
27
|
"StreamConfig",
|
|
24
28
|
"StreamSource",
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"""Unified ``compute_fn`` / ``transformation_fn`` validation.
|
|
2
|
+
|
|
3
|
+
This module is the single source of truth for the policy applied to user
|
|
4
|
+
functions registered on a streaming feature view (``StreamConfig``) or a
|
|
5
|
+
realtime feature view (``RealtimeConfig``). The policy is split into two
|
|
6
|
+
layers, intentionally complementary:
|
|
7
|
+
|
|
8
|
+
- :func:`validate_compute_fn_source` — static AST checks on the dedented
|
|
9
|
+
source text. Enforces that the source is a single top-level
|
|
10
|
+
``def``-style function, with no nested ``def`` / ``async def`` / lambda,
|
|
11
|
+
no calls to forbidden builtins, and only imports from
|
|
12
|
+
:data:`ALLOWED_MODULES`.
|
|
13
|
+
- :func:`validate_compute_fn_callable` — closure-vars / free-name check on
|
|
14
|
+
the live callable. Enforces that every free name resolves to a key in
|
|
15
|
+
:data:`ALLOWED_NAMESPACE_KEYS` (or ``__builtins__``), with no closure
|
|
16
|
+
references to enclosing scopes.
|
|
17
|
+
|
|
18
|
+
Each error message starts with the caller-supplied ``kind`` label
|
|
19
|
+
(``streaming feature view`` or ``realtime feature view``) so the user gets
|
|
20
|
+
a domain-appropriate prefix.
|
|
21
|
+
|
|
22
|
+
This is a deterministic guardrail, not a security sandbox — obfuscated
|
|
23
|
+
bypasses (``getattr(builtins, "__import__")``, etc.) are out of scope.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
28
|
+
import ast
|
|
29
|
+
import inspect
|
|
30
|
+
import textwrap
|
|
31
|
+
from typing import Any, Callable, Optional
|
|
32
|
+
|
|
33
|
+
# Top-level packages permitted in import statements inside compute_fn.
|
|
34
|
+
ALLOWED_MODULES: frozenset[str] = frozenset({"numpy", "pandas", "re", "copy"})
|
|
35
|
+
|
|
36
|
+
# Names that may appear as free globals inside compute_fn. Mirrors the
|
|
37
|
+
# runtime namespace populated by RTFV reconstruction so the same source
|
|
38
|
+
# code runs identically at author time and at warehouse-side execution.
|
|
39
|
+
ALLOWED_NAMESPACE_KEYS: frozenset[str] = frozenset({"pd", "pandas", "np", "numpy", "re", "copy"})
|
|
40
|
+
|
|
41
|
+
# Builtins whose call is rejected by the AST layer. Union of the two
|
|
42
|
+
# pre-existing per-subsystem sets — the strict / RTFV-superset policy.
|
|
43
|
+
FORBIDDEN_BUILTINS: frozenset[str] = frozenset(
|
|
44
|
+
{
|
|
45
|
+
"__import__",
|
|
46
|
+
"eval",
|
|
47
|
+
"exec",
|
|
48
|
+
"compile",
|
|
49
|
+
"open",
|
|
50
|
+
"globals",
|
|
51
|
+
"locals",
|
|
52
|
+
"vars",
|
|
53
|
+
"getattr",
|
|
54
|
+
"setattr",
|
|
55
|
+
"delattr",
|
|
56
|
+
"breakpoint",
|
|
57
|
+
"input",
|
|
58
|
+
}
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def validate_compute_fn_source(source: str, *, kind: str) -> None:
|
|
63
|
+
"""Run the AST layer of compute_fn validation against *source*.
|
|
64
|
+
|
|
65
|
+
Enforces, in this order:
|
|
66
|
+
|
|
67
|
+
1. *source* is valid Python.
|
|
68
|
+
2. *source* contains exactly one top-level ``ast.FunctionDef`` (no
|
|
69
|
+
multi-statement modules, no decorators-only modules, no top-level
|
|
70
|
+
``async def``).
|
|
71
|
+
3. No nested ``ast.FunctionDef`` / ``ast.AsyncFunctionDef`` and no
|
|
72
|
+
``ast.Lambda`` anywhere inside the body.
|
|
73
|
+
4. No ``ast.Call`` whose target name (Name or Attribute) is in
|
|
74
|
+
:data:`FORBIDDEN_BUILTINS`.
|
|
75
|
+
5. Every ``ast.Import`` / ``ast.ImportFrom`` references a top-level
|
|
76
|
+
package in :data:`ALLOWED_MODULES`.
|
|
77
|
+
|
|
78
|
+
Args:
|
|
79
|
+
source: Plain-text Python source for the user function (will be
|
|
80
|
+
dedented internally).
|
|
81
|
+
kind: Domain prefix prepended to every error message; one of
|
|
82
|
+
``"streaming feature view"`` / ``"realtime feature view"``.
|
|
83
|
+
|
|
84
|
+
Raises:
|
|
85
|
+
ValueError: If any rule above is violated. The error message
|
|
86
|
+
names the offending construct and its line number.
|
|
87
|
+
"""
|
|
88
|
+
dedented = textwrap.dedent(source)
|
|
89
|
+
try:
|
|
90
|
+
tree = ast.parse(dedented)
|
|
91
|
+
except SyntaxError as e:
|
|
92
|
+
raise ValueError(f"{kind}: compute_fn source is not valid Python: {e.msg} (line {e.lineno}).") from e
|
|
93
|
+
|
|
94
|
+
if len(tree.body) != 1 or not isinstance(tree.body[0], ast.FunctionDef):
|
|
95
|
+
raise ValueError(
|
|
96
|
+
f"{kind}: compute_fn source must contain exactly one top-level "
|
|
97
|
+
"function definition. Decorators-only modules, multi-statement "
|
|
98
|
+
"modules, and async function definitions at the top level are "
|
|
99
|
+
"not supported."
|
|
100
|
+
)
|
|
101
|
+
outer_fn = tree.body[0]
|
|
102
|
+
|
|
103
|
+
for node in ast.walk(outer_fn):
|
|
104
|
+
if node is outer_fn:
|
|
105
|
+
continue
|
|
106
|
+
if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
|
|
107
|
+
raise ValueError(
|
|
108
|
+
f"{kind}: compute_fn must not contain nested function "
|
|
109
|
+
f"definitions; found {node.name!r} at line {node.lineno}. "
|
|
110
|
+
f"Inline the logic or import helpers from one of the allowed "
|
|
111
|
+
f"runtime namespace modules: {sorted(ALLOWED_NAMESPACE_KEYS)}."
|
|
112
|
+
)
|
|
113
|
+
if isinstance(node, ast.Lambda):
|
|
114
|
+
raise ValueError(
|
|
115
|
+
f"{kind}: compute_fn must not contain lambda expressions; " f"found one at line {node.lineno}."
|
|
116
|
+
)
|
|
117
|
+
if isinstance(node, ast.Call):
|
|
118
|
+
func = node.func
|
|
119
|
+
fname: Optional[str]
|
|
120
|
+
if isinstance(func, ast.Name):
|
|
121
|
+
fname = func.id
|
|
122
|
+
elif isinstance(func, ast.Attribute):
|
|
123
|
+
fname = func.attr
|
|
124
|
+
else:
|
|
125
|
+
fname = None
|
|
126
|
+
if fname is not None and fname in FORBIDDEN_BUILTINS:
|
|
127
|
+
raise ValueError(
|
|
128
|
+
f"{kind}: compute_fn must not call {fname!r}; found call "
|
|
129
|
+
f"at line {node.lineno}. Forbidden builtins: "
|
|
130
|
+
f"{sorted(FORBIDDEN_BUILTINS)}."
|
|
131
|
+
)
|
|
132
|
+
if isinstance(node, ast.Import):
|
|
133
|
+
for alias in node.names:
|
|
134
|
+
module = alias.name.split(".")[0]
|
|
135
|
+
if module not in ALLOWED_MODULES:
|
|
136
|
+
raise ValueError(
|
|
137
|
+
f"{kind}: import {alias.name!r} is not allowed in "
|
|
138
|
+
f"compute_fn. Allowed modules: {sorted(ALLOWED_MODULES)}."
|
|
139
|
+
)
|
|
140
|
+
elif isinstance(node, ast.ImportFrom):
|
|
141
|
+
if node.module:
|
|
142
|
+
module = node.module.split(".")[0]
|
|
143
|
+
if module not in ALLOWED_MODULES:
|
|
144
|
+
raise ValueError(
|
|
145
|
+
f"{kind}: import from {node.module!r} is not allowed "
|
|
146
|
+
f"in compute_fn. Allowed modules: {sorted(ALLOWED_MODULES)}."
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def validate_compute_fn_callable(fn: Callable[..., Any], *, kind: str) -> None:
|
|
151
|
+
"""Run the closure-vars layer of compute_fn validation against *fn*.
|
|
152
|
+
|
|
153
|
+
Uses :func:`inspect.getclosurevars` to inspect the live callable. Names
|
|
154
|
+
bound by in-body imports and attribute lookups are filtered out before
|
|
155
|
+
the namespace check (see :func:`_collect_ast_local_names`) so
|
|
156
|
+
``import pandas`` and ``pd.DataFrame`` do not trip the check.
|
|
157
|
+
|
|
158
|
+
Three rules are enforced:
|
|
159
|
+
|
|
160
|
+
- ``cvars.nonlocals`` is empty: no closure references to an enclosing
|
|
161
|
+
scope.
|
|
162
|
+
- ``cvars.unbound`` (after filtering) is empty: every free name
|
|
163
|
+
resolves somewhere.
|
|
164
|
+
- ``cvars.globals`` (after filtering) live inside
|
|
165
|
+
:data:`ALLOWED_NAMESPACE_KEYS` ∪ ``{"__builtins__"}``.
|
|
166
|
+
|
|
167
|
+
Args:
|
|
168
|
+
fn: The user-supplied callable.
|
|
169
|
+
kind: Domain prefix prepended to every error message.
|
|
170
|
+
|
|
171
|
+
Raises:
|
|
172
|
+
ValueError: If *fn* references closures, unbound names, or globals
|
|
173
|
+
outside the runtime namespace. The message names each offender.
|
|
174
|
+
"""
|
|
175
|
+
try:
|
|
176
|
+
cvars = inspect.getclosurevars(fn)
|
|
177
|
+
except TypeError as e:
|
|
178
|
+
raise ValueError(f"{kind}: compute_fn closure variables are not inspectable: {e}") from e
|
|
179
|
+
|
|
180
|
+
if cvars.nonlocals:
|
|
181
|
+
offenders = sorted(cvars.nonlocals.keys())
|
|
182
|
+
raise ValueError(
|
|
183
|
+
f"{kind}: compute_fn must not reference enclosing-scope variables "
|
|
184
|
+
f"(closures); offending names: {offenders}. Inline the values or "
|
|
185
|
+
f"import from one of the allowed runtime namespace modules: "
|
|
186
|
+
f"{sorted(ALLOWED_NAMESPACE_KEYS)}."
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
try:
|
|
190
|
+
source = inspect.getsource(fn)
|
|
191
|
+
except (OSError, TypeError):
|
|
192
|
+
source = ""
|
|
193
|
+
import_names, attr_names = _collect_ast_local_names(source)
|
|
194
|
+
filterable = import_names | attr_names
|
|
195
|
+
|
|
196
|
+
effective_unbound = cvars.unbound - filterable
|
|
197
|
+
if effective_unbound:
|
|
198
|
+
offenders = sorted(effective_unbound)
|
|
199
|
+
raise ValueError(
|
|
200
|
+
f"{kind}: compute_fn references names that resolve nowhere: "
|
|
201
|
+
f"{offenders}. Check for typos, or import the symbol from one of "
|
|
202
|
+
f"the allowed runtime namespace modules: {sorted(ALLOWED_NAMESPACE_KEYS)}."
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
allowed_globals = set(ALLOWED_NAMESPACE_KEYS) | {"__builtins__"}
|
|
206
|
+
effective_globals = set(cvars.globals.keys()) - filterable
|
|
207
|
+
extra_globals = sorted(effective_globals - allowed_globals)
|
|
208
|
+
if extra_globals:
|
|
209
|
+
raise ValueError(
|
|
210
|
+
f"{kind}: compute_fn references symbols outside the allowed "
|
|
211
|
+
f"runtime namespace: {extra_globals}. Allowed namespace keys: "
|
|
212
|
+
f"{sorted(ALLOWED_NAMESPACE_KEYS)}. Inline the values or import "
|
|
213
|
+
f"the symbol from one of the allowed modules."
|
|
214
|
+
)
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
def _collect_ast_local_names(source: str) -> tuple[set[str], set[str]]:
|
|
218
|
+
"""Return ``(import-name set, attribute-name set)`` for free-name filtering.
|
|
219
|
+
|
|
220
|
+
:func:`inspect.getclosurevars` reports every name read from
|
|
221
|
+
``co_names`` as either resolved or unbound. That set includes module
|
|
222
|
+
names from ``import x`` (``IMPORT_NAME`` reads them) and attribute
|
|
223
|
+
names from ``obj.attr`` (``LOAD_ATTR`` reads them). Neither class is
|
|
224
|
+
a real free name, so callers strip them before applying the namespace
|
|
225
|
+
check.
|
|
226
|
+
|
|
227
|
+
Args:
|
|
228
|
+
source: Dedented source of the user function. An empty / unparsable
|
|
229
|
+
string yields two empty sets (the closure check still runs).
|
|
230
|
+
|
|
231
|
+
Returns:
|
|
232
|
+
Tuple ``(imported_module_names, attribute_names)``.
|
|
233
|
+
"""
|
|
234
|
+
try:
|
|
235
|
+
tree = ast.parse(textwrap.dedent(source))
|
|
236
|
+
except SyntaxError:
|
|
237
|
+
return set(), set()
|
|
238
|
+
import_names: set[str] = set()
|
|
239
|
+
attr_names: set[str] = set()
|
|
240
|
+
for node in ast.walk(tree):
|
|
241
|
+
if isinstance(node, ast.Import):
|
|
242
|
+
for alias in node.names:
|
|
243
|
+
root = alias.name.split(".")[0]
|
|
244
|
+
import_names.add(root)
|
|
245
|
+
elif isinstance(node, ast.ImportFrom):
|
|
246
|
+
if node.module:
|
|
247
|
+
import_names.add(node.module.split(".")[0])
|
|
248
|
+
for alias in node.names:
|
|
249
|
+
if alias.name != "*":
|
|
250
|
+
import_names.add(alias.name)
|
|
251
|
+
elif isinstance(node, ast.Attribute):
|
|
252
|
+
attr_names.add(node.attr)
|
|
253
|
+
return import_names, attr_names
|
{snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/aggregation.py
RENAMED
|
@@ -175,6 +175,19 @@ class AggregationSpec:
|
|
|
175
175
|
f"'{self.output_column}', got: {percentile}"
|
|
176
176
|
)
|
|
177
177
|
|
|
178
|
+
# Validate params for approx_count_distinct (HLL precision)
|
|
179
|
+
if self.function == AggregationType.APPROX_COUNT_DISTINCT:
|
|
180
|
+
if "hll_lg_k" not in self.params:
|
|
181
|
+
raise ValueError(
|
|
182
|
+
f"Parameter 'precision' is required for approx_count_distinct aggregation '{self.output_column}'"
|
|
183
|
+
)
|
|
184
|
+
hll_lg_k = self.params["hll_lg_k"]
|
|
185
|
+
if not isinstance(hll_lg_k, int) or not (4 <= hll_lg_k <= 21):
|
|
186
|
+
raise ValueError(
|
|
187
|
+
f"Parameter 'precision' must be an integer between 4 and 21 for aggregation "
|
|
188
|
+
f"'{self.output_column}', got: {hll_lg_k}"
|
|
189
|
+
)
|
|
190
|
+
|
|
178
191
|
# Validate _SECONDARY_KEY_ARRAY specs
|
|
179
192
|
if self.function.is_secondary_key_array():
|
|
180
193
|
if self.params:
|
|
@@ -232,7 +245,7 @@ class AggregationSpec:
|
|
|
232
245
|
Similar to get_tile_column_name but with _CUM_ prefix instead of _PARTIAL_.
|
|
233
246
|
|
|
234
247
|
Args:
|
|
235
|
-
partial_type: One of "SUM", "COUNT", "SUM_SQ", "
|
|
248
|
+
partial_type: One of "SUM", "COUNT", "SUM_SQ", "DS_HLL", "TDIGEST", "MIN", "MAX", "FIRST".
|
|
236
249
|
|
|
237
250
|
Returns:
|
|
238
251
|
Column name used in the tile table (prefixed with _CUM_).
|
|
@@ -247,13 +260,13 @@ class AggregationSpec:
|
|
|
247
260
|
- _PARTIAL_SUM_{col}: SUM(col) - used by SUM, AVG, STD, VAR
|
|
248
261
|
- _PARTIAL_COUNT_{col}: COUNT(col) - used by COUNT, AVG, STD, VAR
|
|
249
262
|
- _PARTIAL_SUM_SQ_{col}: SUM(col*col) - used by STD, VAR
|
|
250
|
-
-
|
|
263
|
+
- _PARTIAL_DS_HLL_{col}: Datasketches HLL sketch (BINARY) - used by APPROX_COUNT_DISTINCT
|
|
251
264
|
- _PARTIAL_TDIGEST_{col}: T-Digest state - used by APPROX_PERCENTILE
|
|
252
265
|
|
|
253
266
|
This allows sharing columns across aggregation types on the same column.
|
|
254
267
|
|
|
255
268
|
Args:
|
|
256
|
-
partial_type: One of "SUM", "COUNT", "SUM_SQ", "
|
|
269
|
+
partial_type: One of "SUM", "COUNT", "SUM_SQ", "DS_HLL", "TDIGEST", "LAST", "FIRST".
|
|
257
270
|
|
|
258
271
|
Returns:
|
|
259
272
|
Column name used in the tile table (prefixed with _PARTIAL_).
|
{snowflake_ml_python-1.39.0 → snowflake_ml_python-1.41.0}/snowflake/ml/feature_store/feature.py
RENAMED
|
@@ -327,16 +327,20 @@ class Feature:
|
|
|
327
327
|
return cls(AggregationType.FIRST_DISTINCT_N, column, window, offset, n=n)
|
|
328
328
|
|
|
329
329
|
@classmethod
|
|
330
|
-
def approx_count_distinct(cls, column: str, window: str, offset: str = "0") -> Feature:
|
|
330
|
+
def approx_count_distinct(cls, column: str, window: str, offset: str = "0", *, precision: int = 8) -> Feature:
|
|
331
331
|
"""Create an APPROX_COUNT_DISTINCT aggregation feature.
|
|
332
332
|
|
|
333
|
-
Estimates the number of distinct values using
|
|
334
|
-
This is approximate but highly efficient for
|
|
333
|
+
Estimates the number of distinct values using the Apache Datasketches
|
|
334
|
+
HyperLogLog algorithm. This is approximate but highly efficient for
|
|
335
|
+
large datasets.
|
|
335
336
|
|
|
336
337
|
Args:
|
|
337
338
|
column: The column to count distinct values.
|
|
338
339
|
window: The lookback window.
|
|
339
340
|
offset: Offset to shift window into past. Default is "0" (no offset).
|
|
341
|
+
precision: Log-base-2 of the number of buckets in the HLL sketch.
|
|
342
|
+
Controls the trade-off between accuracy and memory. Valid range
|
|
343
|
+
is 4 to 21. Default is 8.
|
|
340
344
|
|
|
341
345
|
Returns:
|
|
342
346
|
A Feature configured for APPROX_COUNT_DISTINCT aggregation.
|
|
@@ -344,8 +348,9 @@ class Feature:
|
|
|
344
348
|
Example::
|
|
345
349
|
|
|
346
350
|
>>> unique_users = Feature.approx_count_distinct("user_id", "24h")
|
|
351
|
+
>>> precise_uniques = Feature.approx_count_distinct("user_id", "24h", precision=12)
|
|
347
352
|
"""
|
|
348
|
-
return cls(AggregationType.APPROX_COUNT_DISTINCT, column, window, offset)
|
|
353
|
+
return cls(AggregationType.APPROX_COUNT_DISTINCT, column, window, offset, hll_lg_k=precision)
|
|
349
354
|
|
|
350
355
|
@classmethod
|
|
351
356
|
def approx_percentile(cls, column: str, window: str, *, percentile: float = 0.5, offset: str = "0") -> Feature:
|