snowflake-ml-python 1.41.0__tar.gz → 1.42.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.41.0 → snowflake_ml_python-1.42.0}/CHANGELOG.md +33 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/PKG-INFO +35 -3
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/pyproject.toml +1 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/env_utils.py +11 -9
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/_compute_fn_validation.py +1 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_store.py +100 -35
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_view.py +14 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/metadata_manager.py +61 -2
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/builder.py +204 -7
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/models.py +141 -3
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/stream_config.py +20 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/streaming_registration.py +12 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/tile_sql_generator.py +333 -50
- snowflake_ml_python-1.42.0/snowflake/ml/jobs/_interop/__init__.py +12 -0
- snowflake_ml_python-1.42.0/snowflake/ml/jobs/_utils/scripts/__init__.py +13 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +1 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +2 -2
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +25 -17
- snowflake_ml_python-1.42.0/snowflake/ml/jobs/_utils/scripts/signal_workers_test.py +209 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +8 -5
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/stage_utils.py +1 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/job.py +30 -7
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/model_version_impl.py +5 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/service_ops.py +74 -23
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -4
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/service.py +42 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +6 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +7 -2
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +7 -2
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +7 -2
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +7 -2
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/keras.py +3 -3
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +160 -34
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +21 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +3 -0
- snowflake_ml_python-1.42.0/snowflake/ml/model/_packager/model_meta/model_sample_input_data.py +251 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_packager.py +14 -2
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +1 -1
- snowflake_ml_python-1.42.0/snowflake/ml/model/_packager/model_save_options.py +140 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/type_hints.py +10 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/_manager/model_manager.py +18 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/registry.py +10 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/PKG-INFO +35 -3
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/SOURCES.txt +4 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/requires.txt +1 -1
- snowflake_ml_python-1.41.0/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/README.md +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/tee.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/url.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/aggregation.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_group.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_view_append_only_validation.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_view_refresh_freq.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/online_service.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_config.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_dataset.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_dataset_udf.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_registration.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/request_source.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/table_schema_evolution.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/stream_source.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/results.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
- {snowflake_ml_python-1.41.0/snowflake/ml/jobs/_interop → snowflake_ml_python-1.42.0/snowflake/ml/jobs/_utils}/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/type_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/job_definition.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/manager.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/batch_inference_task.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/infer_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned_init_once.py_template +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function_init_once.py_template +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_openai_chat_wrapper.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_text_to_text.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/automatic_speech_recognition.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/document_question_answering.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_feature_extraction.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_text_to_text.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_to_text.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/table_question_answering.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_text_to_text.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/visual_question_answering.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_audio_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_image_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_object_detection.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/zero_shot_text_classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/batch/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/code_path.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/compute_pool.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/models/huggingface.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/openai_signatures.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/volatility.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/stage_file.py +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.42.0
|
|
4
|
+
|
|
5
|
+
### New Features
|
|
6
|
+
|
|
7
|
+
* Registry: Support `truncate_dim` for `SentenceTransformers` models. Truncation set at
|
|
8
|
+
construction (`SentenceTransformer(..., truncate_dim=N)`) is captured when the model is logged
|
|
9
|
+
and restored on reload. On clients with `sentence-transformers` 5.0.0 or later, `truncate_dim`
|
|
10
|
+
is also exposed as a runtime parameter in the model signature.
|
|
11
|
+
|
|
12
|
+
* Registry: `log_model()` now captures a representative row from `sample_input_data` and stores it alongside the model
|
|
13
|
+
so inference code snippets shown in the model registry UI can be pre-filled with realistic values. Pass
|
|
14
|
+
`options={"capture_sample_input_data": False}` to opt out (e.g., for sensitive data); generic placeholder values
|
|
15
|
+
will be used in the snippets instead.
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* Registry: Pin `transformers<5` for additional HuggingFace pipeline tasks removed in
|
|
20
|
+
`transformers 5.x` (`summarization`, `text2text-generation`, `question-answering`, and
|
|
21
|
+
`translation_*`), preventing deployment failures from missing pipeline classes.
|
|
22
|
+
|
|
23
|
+
### Behavior Changes
|
|
24
|
+
|
|
25
|
+
### Deprecations
|
|
26
|
+
|
|
27
|
+
## 1.41.0 (2026-05-27)
|
|
4
28
|
|
|
5
29
|
### New Features
|
|
6
30
|
|
|
@@ -26,6 +50,14 @@
|
|
|
26
50
|
|
|
27
51
|
### Behavior Changes
|
|
28
52
|
|
|
53
|
+
* Registry: `log_model(..., options=...)` now rejects unknown top-level keys and unknown keys inside each
|
|
54
|
+
`method_options` entry (for example misspellings or options that belong to a different model framework).
|
|
55
|
+
Previously those keys were ignored. Validation is based on the public save-option TypedDicts and runs
|
|
56
|
+
before dependency reconciliation.
|
|
57
|
+
|
|
58
|
+
* Registry: `use_gpu` is declared on the CatBoost, XGBoost, PyTorch, and TorchScript save-option
|
|
59
|
+
TypedDicts to match the save paths that already read this flag.
|
|
60
|
+
|
|
29
61
|
### Deprecations
|
|
30
62
|
|
|
31
63
|
## 1.39.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.42.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:
|
|
@@ -244,7 +244,7 @@ Requires-Dist: numpy<3,>=1.23
|
|
|
244
244
|
Requires-Dist: packaging<26,>=20.9
|
|
245
245
|
Requires-Dist: pandas<3,>=2.1.4
|
|
246
246
|
Requires-Dist: platformdirs<5
|
|
247
|
-
Requires-Dist: pyarrow
|
|
247
|
+
Requires-Dist: pyarrow
|
|
248
248
|
Requires-Dist: pydantic<3,>=2.8.2
|
|
249
249
|
Requires-Dist: pyjwt<3,>=2.0.0
|
|
250
250
|
Requires-Dist: pytimeparse<2,>=1.1.8
|
|
@@ -416,7 +416,31 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
416
416
|
|
|
417
417
|
# Release History
|
|
418
418
|
|
|
419
|
-
## 1.
|
|
419
|
+
## 1.42.0
|
|
420
|
+
|
|
421
|
+
### New Features
|
|
422
|
+
|
|
423
|
+
* Registry: Support `truncate_dim` for `SentenceTransformers` models. Truncation set at
|
|
424
|
+
construction (`SentenceTransformer(..., truncate_dim=N)`) is captured when the model is logged
|
|
425
|
+
and restored on reload. On clients with `sentence-transformers` 5.0.0 or later, `truncate_dim`
|
|
426
|
+
is also exposed as a runtime parameter in the model signature.
|
|
427
|
+
|
|
428
|
+
* Registry: `log_model()` now captures a representative row from `sample_input_data` and stores it alongside the model
|
|
429
|
+
so inference code snippets shown in the model registry UI can be pre-filled with realistic values. Pass
|
|
430
|
+
`options={"capture_sample_input_data": False}` to opt out (e.g., for sensitive data); generic placeholder values
|
|
431
|
+
will be used in the snippets instead.
|
|
432
|
+
|
|
433
|
+
### Bug Fixes
|
|
434
|
+
|
|
435
|
+
* Registry: Pin `transformers<5` for additional HuggingFace pipeline tasks removed in
|
|
436
|
+
`transformers 5.x` (`summarization`, `text2text-generation`, `question-answering`, and
|
|
437
|
+
`translation_*`), preventing deployment failures from missing pipeline classes.
|
|
438
|
+
|
|
439
|
+
### Behavior Changes
|
|
440
|
+
|
|
441
|
+
### Deprecations
|
|
442
|
+
|
|
443
|
+
## 1.41.0 (2026-05-27)
|
|
420
444
|
|
|
421
445
|
### New Features
|
|
422
446
|
|
|
@@ -442,6 +466,14 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
442
466
|
|
|
443
467
|
### Behavior Changes
|
|
444
468
|
|
|
469
|
+
* Registry: `log_model(..., options=...)` now rejects unknown top-level keys and unknown keys inside each
|
|
470
|
+
`method_options` entry (for example misspellings or options that belong to a different model framework).
|
|
471
|
+
Previously those keys were ignored. Validation is based on the public save-option TypedDicts and runs
|
|
472
|
+
before dependency reconciliation.
|
|
473
|
+
|
|
474
|
+
* Registry: `use_gpu` is declared on the CatBoost, XGBoost, PyTorch, and TorchScript save-option
|
|
475
|
+
TypedDicts to match the save paths that already read this flag.
|
|
476
|
+
|
|
445
477
|
### Deprecations
|
|
446
478
|
|
|
447
479
|
## 1.39.0
|
|
@@ -8,7 +8,7 @@ description = "The machine learning client library that is used for interacting
|
|
|
8
8
|
classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis",]
|
|
9
9
|
requires-python = ">=3.9, <3.14"
|
|
10
10
|
dynamic = [ "version", "readme",]
|
|
11
|
-
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<26", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow
|
|
11
|
+
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "h2>=4.3.0,<5", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<26", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "scikit-learn<1.8", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.17.3,<5", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost<4",]
|
|
12
12
|
[[project.authors]]
|
|
13
13
|
name = "Snowflake, Inc"
|
|
14
14
|
email = "support@snowflake.com"
|
{snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/env_utils.py
RENAMED
|
@@ -57,20 +57,22 @@ def get_execution_context() -> str:
|
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
def is_local_conda_environment() -> bool:
|
|
60
|
-
"""Return True if the active Python interpreter appears to run inside a conda env
|
|
61
|
-
or under conda session context (e.g. a venv created inside an activated conda env).
|
|
60
|
+
"""Return True if the active Python interpreter appears to run inside a conda env.
|
|
62
61
|
|
|
63
|
-
Uses
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
Uses ``conda-meta`` under :py:data:`sys.prefix` for conda-created environments.
|
|
63
|
+
Standard-library virtual environments (``pyvenv.cfg`` present) are **not** treated as
|
|
64
|
+
conda even when ``CONDA_PREFIX`` is still set in the shell (e.g. conda base
|
|
65
|
+
auto-activation while a separate venv kernel is selected).
|
|
67
66
|
|
|
68
67
|
Returns:
|
|
69
|
-
``True`` if ``sys.prefix`` contains ``conda-meta
|
|
70
|
-
|
|
68
|
+
``True`` if ``sys.prefix`` contains ``conda-meta``, or ``CONDA_PREFIX`` is set and
|
|
69
|
+
there is no ``pyvenv.cfg`` under ``sys.prefix``; else ``False``.
|
|
71
70
|
"""
|
|
72
|
-
|
|
71
|
+
prefix = sys.prefix
|
|
72
|
+
if os.path.isdir(os.path.join(prefix, "conda-meta")):
|
|
73
73
|
return True
|
|
74
|
+
if os.path.isfile(os.path.join(prefix, "pyvenv.cfg")):
|
|
75
|
+
return False
|
|
74
76
|
return bool(os.environ.get("CONDA_PREFIX", "").strip())
|
|
75
77
|
|
|
76
78
|
|
|
@@ -31,7 +31,7 @@ import textwrap
|
|
|
31
31
|
from typing import Any, Callable, Optional
|
|
32
32
|
|
|
33
33
|
# Top-level packages permitted in import statements inside compute_fn.
|
|
34
|
-
ALLOWED_MODULES: frozenset[str] = frozenset({"numpy", "pandas", "re", "copy"})
|
|
34
|
+
ALLOWED_MODULES: frozenset[str] = frozenset({"numpy", "pandas", "re", "copy", "dataclasses"})
|
|
35
35
|
|
|
36
36
|
# Names that may appear as free globals inside compute_fn. Mirrors the
|
|
37
37
|
# runtime namespace populated by RTFV reconstruction so the same source
|
|
@@ -71,6 +71,7 @@ from snowflake.ml.feature_store.feature_view import (
|
|
|
71
71
|
from snowflake.ml.feature_store.metadata_manager import (
|
|
72
72
|
AggregationMetadata,
|
|
73
73
|
FeatureStoreMetadataManager,
|
|
74
|
+
FeatureViewMetadataConfig,
|
|
74
75
|
MetadataObjectType,
|
|
75
76
|
MetadataType,
|
|
76
77
|
RealtimeConfigMetadata,
|
|
@@ -91,6 +92,7 @@ from snowflake.ml.feature_store.spec.enums import (
|
|
|
91
92
|
from snowflake.ml.feature_store.spec.models import (
|
|
92
93
|
FeatureViewSpec,
|
|
93
94
|
validate_spec_oft_offline_table_schema,
|
|
95
|
+
validate_spec_oft_tiled_offline_table_schema,
|
|
94
96
|
)
|
|
95
97
|
from snowflake.ml.feature_store.stream_source import (
|
|
96
98
|
_LIST_STREAM_SOURCE_SCHEMA,
|
|
@@ -220,6 +222,27 @@ _SNAPSHOT_STATUS_TABLE = "SNOWML_SNAPSHOT_STATUS"
|
|
|
220
222
|
_UNSET: Any = object()
|
|
221
223
|
|
|
222
224
|
|
|
225
|
+
def _sql_string_literal(value: str) -> str:
|
|
226
|
+
"""Quote a string for safe inclusion as a Snowflake DDL string literal.
|
|
227
|
+
|
|
228
|
+
Doubles embedded single quotes (the Snowflake convention for escaping
|
|
229
|
+
inside single-quoted literals) and wraps the result in single quotes so
|
|
230
|
+
callers cannot forget the surrounding quotes. Use this everywhere a
|
|
231
|
+
user-controlled string is interpolated into a single-quoted SQL literal
|
|
232
|
+
such as ``COMMENT = ...`` or ``ALLOWED_VALUES ...`` — Snowflake DDL does
|
|
233
|
+
not accept ``?`` bind parameters in those positions, so quote-doubling
|
|
234
|
+
is the only safe option.
|
|
235
|
+
|
|
236
|
+
Args:
|
|
237
|
+
value: Raw string to escape.
|
|
238
|
+
|
|
239
|
+
Returns:
|
|
240
|
+
``'<value with `'` doubled>'`` — already quoted, ready to drop into
|
|
241
|
+
SQL with no surrounding quotes at the call site.
|
|
242
|
+
"""
|
|
243
|
+
return "'" + value.replace("'", "''") + "'"
|
|
244
|
+
|
|
245
|
+
|
|
223
246
|
@dataclass(frozen=True)
|
|
224
247
|
class _FeatureStoreObjInfo:
|
|
225
248
|
type: _FeatureStoreObjTypes
|
|
@@ -632,7 +655,7 @@ class FeatureStore:
|
|
|
632
655
|
statement_params=self._telemetry_stmp
|
|
633
656
|
)
|
|
634
657
|
# Metadata table for aggregation configs is created lazily by metadata manager
|
|
635
|
-
|
|
658
|
+
self._ensure_snapshot_status_table_exists()
|
|
636
659
|
except Exception as e:
|
|
637
660
|
raise snowml_exceptions.SnowflakeMLException(
|
|
638
661
|
error_code=error_codes.INTERNAL_SNOWPARK_ERROR,
|
|
@@ -736,8 +759,8 @@ class FeatureStore:
|
|
|
736
759
|
try:
|
|
737
760
|
self._session.sql(
|
|
738
761
|
f"""CREATE TAG IF NOT EXISTS {full_tag_name}
|
|
739
|
-
ALLOWED_VALUES
|
|
740
|
-
COMMENT =
|
|
762
|
+
ALLOWED_VALUES {_sql_string_literal(join_keys_str)}
|
|
763
|
+
COMMENT = {_sql_string_literal(entity.desc)}
|
|
741
764
|
"""
|
|
742
765
|
).collect(statement_params=self._telemetry_stmp)
|
|
743
766
|
except Exception as e:
|
|
@@ -801,7 +824,7 @@ class FeatureStore:
|
|
|
801
824
|
|
|
802
825
|
try:
|
|
803
826
|
full_name = f"{self._config.full_schema_path}.{self._get_entity_name(name)}"
|
|
804
|
-
self._session.sql(f"ALTER TAG {full_name} SET COMMENT =
|
|
827
|
+
self._session.sql(f"ALTER TAG {full_name} SET COMMENT = {_sql_string_literal(new_desc)}").collect(
|
|
805
828
|
statement_params=self._telemetry_stmp
|
|
806
829
|
)
|
|
807
830
|
except Exception as e:
|
|
@@ -1004,6 +1027,17 @@ class FeatureStore:
|
|
|
1004
1027
|
feature_view._initialize_from_feature_df(udf_df)
|
|
1005
1028
|
feature_view._validate()
|
|
1006
1029
|
|
|
1030
|
+
# Set authoring package version before tile query generation. A tiled
|
|
1031
|
+
# rollup FV reads its parent's tile columns and emits the same column
|
|
1032
|
+
# layout, so it must inherit the parent's authoring version (legacy
|
|
1033
|
+
# vs. new distinct-N format); otherwise the rollup SQL would reference
|
|
1034
|
+
# columns that don't exist on a legacy parent's DT. Every other feature
|
|
1035
|
+
# view records the current snowml version.
|
|
1036
|
+
if feature_view.is_tiled and feature_view.rollup_config is not None:
|
|
1037
|
+
feature_view._authoring_pkg_version = feature_view.rollup_config.source.authoring_pkg_version
|
|
1038
|
+
else:
|
|
1039
|
+
feature_view._authoring_pkg_version = snowml_version.VERSION
|
|
1040
|
+
|
|
1007
1041
|
# For tiled feature views, skip column definitions since the tiling query
|
|
1008
1042
|
# produces different columns (TILE_START, partial aggregates)
|
|
1009
1043
|
column_descs = "" if feature_view.is_tiled else self._build_column_descs(feature_view)
|
|
@@ -1039,8 +1073,20 @@ class FeatureStore:
|
|
|
1039
1073
|
descs = None
|
|
1040
1074
|
if feature_view.feature_descs:
|
|
1041
1075
|
descs = {k.identifier(): v for k, v in feature_view.feature_descs.items()}
|
|
1042
|
-
# Save specs and
|
|
1043
|
-
|
|
1076
|
+
# Save specs, descs, and FV metadata config atomically in a single
|
|
1077
|
+
# statement. Persist the version actually used to author the tiles
|
|
1078
|
+
# (a rollup FV inherits its parent's version) so reloads pick the
|
|
1079
|
+
# matching tile-column layout. Legacy FVs carry None here (a rollup on
|
|
1080
|
+
# a legacy parent inherits None) and persist no version row.
|
|
1081
|
+
authored_version = feature_view.authoring_pkg_version
|
|
1082
|
+
fv_meta_config = (
|
|
1083
|
+
FeatureViewMetadataConfig(authoring_pkg_version=authored_version)
|
|
1084
|
+
if authored_version is not None
|
|
1085
|
+
else None
|
|
1086
|
+
)
|
|
1087
|
+
self._metadata_manager.save_feature_view_metadata(
|
|
1088
|
+
feature_view.name, version, agg_metadata, descs, fv_metadata_config=fv_meta_config
|
|
1089
|
+
)
|
|
1044
1090
|
|
|
1045
1091
|
# Step 4: Save rollup metadata for PIT-correct training queries
|
|
1046
1092
|
if feature_view._rollup_metadata is not None:
|
|
@@ -3759,7 +3805,7 @@ class FeatureStore:
|
|
|
3759
3805
|
fqn = feature_view.fully_qualified_name()
|
|
3760
3806
|
|
|
3761
3807
|
if feature_view.status == FeatureViewStatus.STATIC:
|
|
3762
|
-
return [("OFFLINE_UPDATE", f"ALTER VIEW {fqn} SET COMMENT =
|
|
3808
|
+
return [("OFFLINE_UPDATE", f"ALTER VIEW {fqn} SET COMMENT = {_sql_string_literal(desc)}")], []
|
|
3763
3809
|
|
|
3764
3810
|
# Managed (Dynamic-Table-backed) FVs always have a refresh_freq — the
|
|
3765
3811
|
# only refresh_freq=None case is an external (View-backed) FV, which
|
|
@@ -3778,7 +3824,8 @@ class FeatureStore:
|
|
|
3778
3824
|
def alter_dt(op_type: str, *, target_lag: str, wh: Optional[SqlIdentifier], comment: str) -> tuple[str, str]:
|
|
3779
3825
|
return (
|
|
3780
3826
|
op_type,
|
|
3781
|
-
f"ALTER DYNAMIC TABLE {fqn} SET TARGET_LAG = '{target_lag}'"
|
|
3827
|
+
f"ALTER DYNAMIC TABLE {fqn} SET TARGET_LAG = '{target_lag}'"
|
|
3828
|
+
f" WAREHOUSE = {wh} COMMENT = {_sql_string_literal(comment)}",
|
|
3782
3829
|
)
|
|
3783
3830
|
|
|
3784
3831
|
def create_task_ops(op_type: str, *, cron_expr: str, wh: Optional[SqlIdentifier]) -> list[tuple[str, str]]:
|
|
@@ -4666,6 +4713,7 @@ class FeatureStore:
|
|
|
4666
4713
|
features=feature_view.aggregation_specs,
|
|
4667
4714
|
spine_timestamp_col="_QUERY_TS",
|
|
4668
4715
|
fv_index=0,
|
|
4716
|
+
authoring_pkg_version=feature_view.authoring_pkg_version,
|
|
4669
4717
|
)
|
|
4670
4718
|
|
|
4671
4719
|
merge_ctes = generator.generate_all_ctes()
|
|
@@ -5217,7 +5265,7 @@ class FeatureStore:
|
|
|
5217
5265
|
assert storage_config.base_location is not None, "base_location is required for ICEBERG format"
|
|
5218
5266
|
query = f"""CREATE{override_clause} DYNAMIC ICEBERG TABLE {table_name}{column_clause}
|
|
5219
5267
|
TARGET_LAG = '{'DOWNSTREAM' if schedule_task else feature_view.refresh_freq}'
|
|
5220
|
-
COMMENT =
|
|
5268
|
+
COMMENT = {_sql_string_literal(feature_view.desc)}
|
|
5221
5269
|
TAG (
|
|
5222
5270
|
{tagging_clause}
|
|
5223
5271
|
)
|
|
@@ -5231,7 +5279,7 @@ class FeatureStore:
|
|
|
5231
5279
|
else:
|
|
5232
5280
|
query = f"""CREATE{override_clause} DYNAMIC TABLE {table_name}{column_clause}
|
|
5233
5281
|
TARGET_LAG = '{'DOWNSTREAM' if schedule_task else feature_view.refresh_freq}'
|
|
5234
|
-
COMMENT =
|
|
5282
|
+
COMMENT = {_sql_string_literal(feature_view.desc)}
|
|
5235
5283
|
TAG (
|
|
5236
5284
|
{tagging_clause}
|
|
5237
5285
|
)
|
|
@@ -5257,7 +5305,12 @@ class FeatureStore:
|
|
|
5257
5305
|
return query
|
|
5258
5306
|
|
|
5259
5307
|
def _ensure_snapshot_status_table_exists(self) -> None:
|
|
5260
|
-
"""
|
|
5308
|
+
"""Create the snapshot status table if it does not already exist.
|
|
5309
|
+
|
|
5310
|
+
Called from feature-store initialization (``CREATE_IF_NOT_EXIST``) and before
|
|
5311
|
+
append-only snapshot registration so status-row cleanup never depends on a
|
|
5312
|
+
prior append-only registration in the schema.
|
|
5313
|
+
"""
|
|
5261
5314
|
status_table_fqn = self._get_fully_qualified_name(SqlIdentifier(_SNAPSHOT_STATUS_TABLE))
|
|
5262
5315
|
self._session.sql(
|
|
5263
5316
|
f"""CREATE TABLE IF NOT EXISTS {status_table_fqn} (
|
|
@@ -5279,10 +5332,6 @@ class FeatureStore:
|
|
|
5279
5332
|
Args:
|
|
5280
5333
|
feature_view_name: The versioned physical name of the feature view, for
|
|
5281
5334
|
example ``MY_FV$V1``.
|
|
5282
|
-
|
|
5283
|
-
Raises:
|
|
5284
|
-
SnowparkSQLException: If deleting snapshot status rows fails for a reason
|
|
5285
|
-
other than the status table not existing (SQL error code 2003).
|
|
5286
5335
|
"""
|
|
5287
5336
|
snapshot_table_name = FeatureView._get_snapshot_table_name(feature_view_name)
|
|
5288
5337
|
snapshot_fqn = self._get_fully_qualified_name(snapshot_table_name)
|
|
@@ -5298,12 +5347,11 @@ class FeatureStore:
|
|
|
5298
5347
|
statement_params=self._telemetry_stmp
|
|
5299
5348
|
)
|
|
5300
5349
|
except SnowparkSQLException as e:
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
raise
|
|
5350
|
+
logger.warning(
|
|
5351
|
+
"feature store: could not delete snapshot status row for %s: %s",
|
|
5352
|
+
fully_qualified_name,
|
|
5353
|
+
e,
|
|
5354
|
+
)
|
|
5307
5355
|
|
|
5308
5356
|
def _cleanup_stale_feature_view_resources(
|
|
5309
5357
|
self,
|
|
@@ -5847,12 +5895,15 @@ END;"""
|
|
|
5847
5895
|
f"WHERE {vfc} <= CURRENT_TIMESTAMP() AND ({vtc} IS NULL OR {vtc} > CURRENT_TIMESTAMP())"
|
|
5848
5896
|
)
|
|
5849
5897
|
|
|
5898
|
+
# The rollup FV inherits its parent's authoring version (set at
|
|
5899
|
+
# registration), so its tile-column naming matches the parent's DT.
|
|
5850
5900
|
generator = RollupSqlGenerator(
|
|
5851
5901
|
parent_tile_table=parent_tile_table,
|
|
5852
5902
|
parent_join_keys=parent_join_keys,
|
|
5853
5903
|
new_join_keys=new_join_keys,
|
|
5854
5904
|
mapping_query=flat_mapping_query,
|
|
5855
5905
|
aggregation_specs=feature_view.aggregation_specs or [],
|
|
5906
|
+
authoring_pkg_version=feature_view.authoring_pkg_version,
|
|
5856
5907
|
)
|
|
5857
5908
|
rollup_sql = generator.generate()
|
|
5858
5909
|
|
|
@@ -5868,7 +5919,7 @@ END;"""
|
|
|
5868
5919
|
try:
|
|
5869
5920
|
query = f"""CREATE{overwrite_clause} DYNAMIC TABLE {fully_qualified_name}
|
|
5870
5921
|
TARGET_LAG = '{target_lag}'
|
|
5871
|
-
COMMENT =
|
|
5922
|
+
COMMENT = {_sql_string_literal(feature_view.desc)}
|
|
5872
5923
|
TAG (
|
|
5873
5924
|
{tagging_clause_str}
|
|
5874
5925
|
)
|
|
@@ -6245,7 +6296,7 @@ END;"""
|
|
|
6245
6296
|
tagging_clause_str: str,
|
|
6246
6297
|
) -> str:
|
|
6247
6298
|
return f"""CREATE{overwrite_clause} VIEW {view_name} ({column_descs})
|
|
6248
|
-
COMMENT =
|
|
6299
|
+
COMMENT = {_sql_string_literal(feature_view.desc)}
|
|
6249
6300
|
TAG (
|
|
6250
6301
|
{tagging_clause_str}
|
|
6251
6302
|
)
|
|
@@ -6381,6 +6432,7 @@ END;"""
|
|
|
6381
6432
|
aggregation_specs=feature_view.aggregation_specs or [],
|
|
6382
6433
|
mapping_valid_from_col=rm.mapping_valid_from_col,
|
|
6383
6434
|
mapping_valid_to_col=rm.mapping_valid_to_col,
|
|
6435
|
+
authoring_pkg_version=feature_view.authoring_pkg_version,
|
|
6384
6436
|
)
|
|
6385
6437
|
pit_cte_name = f"PIT_ROLLUP_FV{i}"
|
|
6386
6438
|
cte_name_str, cte_body = pit_generator.generate_as_cte(pit_cte_name)
|
|
@@ -6395,6 +6447,7 @@ END;"""
|
|
|
6395
6447
|
features=feature_view.aggregation_specs, # type: ignore[arg-type]
|
|
6396
6448
|
spine_timestamp_col=spine_timestamp_col,
|
|
6397
6449
|
fv_index=i,
|
|
6450
|
+
authoring_pkg_version=feature_view.authoring_pkg_version,
|
|
6398
6451
|
)
|
|
6399
6452
|
# Add all CTEs from the merging generator
|
|
6400
6453
|
for cte_tuple in generator.generate_all_ctes():
|
|
@@ -7667,6 +7720,12 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7667
7720
|
)
|
|
7668
7721
|
self._hydrate_postgres_online_service(fv)
|
|
7669
7722
|
|
|
7723
|
+
# Load authoring package version from metadata table. Legacy FVs have no
|
|
7724
|
+
# row -> None.
|
|
7725
|
+
if is_tiled:
|
|
7726
|
+
fv_meta_config = self._metadata_manager.get_feature_view_metadata_config(name.identifier(), version)
|
|
7727
|
+
fv._authoring_pkg_version = fv_meta_config.authoring_pkg_version if fv_meta_config else None
|
|
7728
|
+
|
|
7670
7729
|
if agg_metadata and agg_metadata.feature_aggregation_method:
|
|
7671
7730
|
fv._feature_aggregation_method = FeatureAggregationMethod(agg_metadata.feature_aggregation_method)
|
|
7672
7731
|
elif is_tiled:
|
|
@@ -7719,6 +7778,11 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7719
7778
|
is_streaming=fv_metadata.is_streaming,
|
|
7720
7779
|
)
|
|
7721
7780
|
self._hydrate_postgres_online_service(fv)
|
|
7781
|
+
|
|
7782
|
+
if is_tiled:
|
|
7783
|
+
fv_meta_config = self._metadata_manager.get_feature_view_metadata_config(name.identifier(), version)
|
|
7784
|
+
fv._authoring_pkg_version = fv_meta_config.authoring_pkg_version if fv_meta_config else None
|
|
7785
|
+
|
|
7722
7786
|
return fv
|
|
7723
7787
|
|
|
7724
7788
|
def _resolve_postgres_online_query_url(self, *, log_label: str) -> Optional[str]:
|
|
@@ -7891,13 +7955,14 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7891
7955
|
self._config.schema,
|
|
7892
7956
|
statement_params=self._telemetry_stmp,
|
|
7893
7957
|
)
|
|
7894
|
-
#
|
|
7895
|
-
#
|
|
7958
|
+
# Read offline column shapes from the materialized DT/View so storage-side
|
|
7959
|
+
# lengths land in the spec. Non-tiled streaming is already materialized-backed
|
|
7960
|
+
# via _initialize_from_feature_df, so skip the extra describe.
|
|
7896
7961
|
pg_offline_dt_schema: Optional[StructType] = None
|
|
7897
7962
|
try:
|
|
7898
|
-
if feature_view.is_tiled:
|
|
7963
|
+
if feature_view.is_tiled or not feature_view.is_streaming:
|
|
7899
7964
|
pg_offline_dt_schema = self._session.table(source_table_name).schema
|
|
7900
|
-
|
|
7965
|
+
validate_spec_oft_tiled_offline_table_schema(pg_offline_dt_schema)
|
|
7901
7966
|
else:
|
|
7902
7967
|
validate_spec_oft_offline_table_schema(feature_view.output_schema)
|
|
7903
7968
|
except ValueError as e:
|
|
@@ -7993,16 +8058,16 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
7993
8058
|
feature_view_name: Physical name of the DT/View (already created).
|
|
7994
8059
|
version: Feature view version string.
|
|
7995
8060
|
target_lag: Resolved target lag string (e.g., ``"30s"``).
|
|
7996
|
-
offline_materialized_schema:
|
|
7997
|
-
|
|
7998
|
-
|
|
8061
|
+
offline_materialized_schema: Snowpark schema of the materialized DT/View
|
|
8062
|
+
(from ``Session.table(fq_dt).schema``). Required when ``feature_view.is_tiled``;
|
|
8063
|
+
preferred for non-tiled batch so column shapes track storage. When omitted,
|
|
8064
|
+
falls back to ``feature_view.output_schema``.
|
|
7999
8065
|
|
|
8000
8066
|
Returns:
|
|
8001
8067
|
FeatureViewSpec instance ready for serialization.
|
|
8002
8068
|
|
|
8003
8069
|
Raises:
|
|
8004
|
-
ValueError: If tiled batch is missing *offline_materialized_schema
|
|
8005
|
-
passes a non-``None`` *offline_materialized_schema*.
|
|
8070
|
+
ValueError: If tiled batch is missing *offline_materialized_schema*.
|
|
8006
8071
|
"""
|
|
8007
8072
|
database = self._config.database.resolved()
|
|
8008
8073
|
schema = self._config.schema.resolved()
|
|
@@ -8033,9 +8098,9 @@ FROM {batch_cte_names[0]}{''.join(merge_join_parts)}
|
|
|
8033
8098
|
)
|
|
8034
8099
|
offline_columns = offline_materialized_schema
|
|
8035
8100
|
else:
|
|
8036
|
-
|
|
8037
|
-
|
|
8038
|
-
|
|
8101
|
+
offline_columns = (
|
|
8102
|
+
offline_materialized_schema if offline_materialized_schema is not None else feature_view.output_schema
|
|
8103
|
+
)
|
|
8039
8104
|
# Batch FVs always register the materialized table as BatchSource; Tiled/UDFTransformed are streaming-only.
|
|
8040
8105
|
offline_table_type = TableType.BATCH_SOURCE
|
|
8041
8106
|
|
{snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_view.py
RENAMED
|
@@ -1063,6 +1063,9 @@ class FeatureView(lineage_node.LineageNode):
|
|
|
1063
1063
|
|
|
1064
1064
|
self._postgres_online_query_url: Optional[str] = None
|
|
1065
1065
|
|
|
1066
|
+
# Package version that authored this FV (populated from metadata table on reconstruction).
|
|
1067
|
+
self._authoring_pkg_version: Optional[str] = None
|
|
1068
|
+
|
|
1066
1069
|
# Column aliasing for dataset generation (ephemeral, in-memory only)
|
|
1067
1070
|
self._column_alias: Optional[str] = None
|
|
1068
1071
|
|
|
@@ -1566,6 +1569,11 @@ class FeatureView(lineage_node.LineageNode):
|
|
|
1566
1569
|
"""Get the aggregation specifications (internal use)."""
|
|
1567
1570
|
return self._aggregation_specs
|
|
1568
1571
|
|
|
1572
|
+
@property
|
|
1573
|
+
def authoring_pkg_version(self) -> Optional[str]:
|
|
1574
|
+
"""Get the snowml package version that authored this feature view."""
|
|
1575
|
+
return self._authoring_pkg_version
|
|
1576
|
+
|
|
1569
1577
|
@property
|
|
1570
1578
|
def aggregation_secondary_keys(self) -> Optional[list[str]]:
|
|
1571
1579
|
"""Get the FV-level secondary aggregation keys, if any."""
|
|
@@ -2354,6 +2362,11 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2354
2362
|
if rollup_meta_dict is not None:
|
|
2355
2363
|
fv._rollup_metadata = RollupMetadata.from_dict(rollup_meta_dict)
|
|
2356
2364
|
|
|
2365
|
+
# Restore authoring package version (serialized via _to_dict). Absent for
|
|
2366
|
+
# FVs serialized before this field existed -> None, which downstream treats
|
|
2367
|
+
# as legacy (1.41.0) tile/merge SQL.
|
|
2368
|
+
fv._authoring_pkg_version = json_dict.get("_authoring_pkg_version")
|
|
2369
|
+
|
|
2357
2370
|
return fv
|
|
2358
2371
|
|
|
2359
2372
|
def _get_compact_repr(self) -> _CompactRepresentation:
|
|
@@ -2535,6 +2548,7 @@ Got {len(self._feature_df.queries['queries'])}: {self._feature_df.queries['queri
|
|
|
2535
2548
|
timestamp_col=self._timestamp_col,
|
|
2536
2549
|
feature_granularity=self._feature_granularity, # type: ignore[arg-type]
|
|
2537
2550
|
features=self._aggregation_specs, # type: ignore[arg-type]
|
|
2551
|
+
authoring_pkg_version=self._authoring_pkg_version,
|
|
2538
2552
|
)
|
|
2539
2553
|
return generator.generate()
|
|
2540
2554
|
|
|
@@ -52,6 +52,28 @@ class MetadataType(str, Enum):
|
|
|
52
52
|
# references (as ``FvSourceRef`` rows), request source schema, output
|
|
53
53
|
# schema, and the captured output_columns list.
|
|
54
54
|
REALTIME_CONFIG = "REALTIME_CONFIG"
|
|
55
|
+
FEATURE_VIEW_METADATA = "FEATURE_VIEW_METADATA"
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@dataclass
|
|
59
|
+
class FeatureViewMetadataConfig:
|
|
60
|
+
"""General-purpose metadata for a registered feature view.
|
|
61
|
+
|
|
62
|
+
Stored under MetadataType.FEATURE_VIEW_METADATA. Currently tracks the
|
|
63
|
+
snowml package version that authored the feature view, used to select
|
|
64
|
+
between legacy and new tile/merge behavior.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
authoring_pkg_version: str
|
|
68
|
+
|
|
69
|
+
def to_dict(self) -> dict[str, Any]:
|
|
70
|
+
"""Convert to dictionary for JSON serialization."""
|
|
71
|
+
return {"authoring_pkg_version": self.authoring_pkg_version}
|
|
72
|
+
|
|
73
|
+
@classmethod
|
|
74
|
+
def from_dict(cls, data: dict[str, Any]) -> FeatureViewMetadataConfig:
|
|
75
|
+
"""Create from dictionary."""
|
|
76
|
+
return cls(authoring_pkg_version=data["authoring_pkg_version"])
|
|
55
77
|
|
|
56
78
|
|
|
57
79
|
@dataclass
|
|
@@ -508,17 +530,19 @@ class FeatureStoreMetadataManager:
|
|
|
508
530
|
version: str,
|
|
509
531
|
specs: AggregationMetadata,
|
|
510
532
|
descs: Optional[dict[str, str]] = None,
|
|
533
|
+
fv_metadata_config: Optional[FeatureViewMetadataConfig] = None,
|
|
511
534
|
) -> None:
|
|
512
535
|
"""Save all metadata for a tiled feature view atomically.
|
|
513
536
|
|
|
514
|
-
This method saves
|
|
515
|
-
INSERT statement for atomicity during creation.
|
|
537
|
+
This method saves feature specs, descriptions, and general FV metadata
|
|
538
|
+
in a single INSERT statement for atomicity during creation.
|
|
516
539
|
|
|
517
540
|
Args:
|
|
518
541
|
fv_name: Feature view name.
|
|
519
542
|
version: Feature view version.
|
|
520
543
|
specs: Aggregation metadata (required).
|
|
521
544
|
descs: Optional dictionary of feature descriptions.
|
|
545
|
+
fv_metadata_config: Optional general-purpose FV metadata (e.g. authoring version).
|
|
522
546
|
"""
|
|
523
547
|
self.ensure_table_exists()
|
|
524
548
|
|
|
@@ -538,6 +562,13 @@ class FeatureStoreMetadataManager:
|
|
|
538
562
|
f"'{version}', '{MetadataType.FEATURE_DESCS.value}', PARSE_JSON($${descs_json}$$)"
|
|
539
563
|
)
|
|
540
564
|
|
|
565
|
+
if fv_metadata_config is not None:
|
|
566
|
+
config_json = json.dumps(fv_metadata_config.to_dict())
|
|
567
|
+
selects.append(
|
|
568
|
+
f"SELECT '{MetadataObjectType.FEATURE_VIEW.value}', '{normalized_name}', "
|
|
569
|
+
f"'{version}', '{MetadataType.FEATURE_VIEW_METADATA.value}', PARSE_JSON($${config_json}$$)"
|
|
570
|
+
)
|
|
571
|
+
|
|
541
572
|
union_query = " UNION ALL ".join(selects)
|
|
542
573
|
|
|
543
574
|
self._session.sql(
|
|
@@ -570,6 +601,34 @@ class FeatureStoreMetadataManager:
|
|
|
570
601
|
)
|
|
571
602
|
return data
|
|
572
603
|
|
|
604
|
+
# =========================================================================
|
|
605
|
+
# Feature View Metadata Config
|
|
606
|
+
# =========================================================================
|
|
607
|
+
|
|
608
|
+
def get_feature_view_metadata_config(
|
|
609
|
+
self,
|
|
610
|
+
fv_name: str,
|
|
611
|
+
version: str,
|
|
612
|
+
) -> Optional[FeatureViewMetadataConfig]:
|
|
613
|
+
"""Get general-purpose metadata for a feature view.
|
|
614
|
+
|
|
615
|
+
Args:
|
|
616
|
+
fv_name: Feature view name.
|
|
617
|
+
version: Feature view version.
|
|
618
|
+
|
|
619
|
+
Returns:
|
|
620
|
+
FeatureViewMetadataConfig if found, None otherwise.
|
|
621
|
+
"""
|
|
622
|
+
data = self._get_metadata(
|
|
623
|
+
object_type=MetadataObjectType.FEATURE_VIEW,
|
|
624
|
+
object_name=fv_name,
|
|
625
|
+
version=version,
|
|
626
|
+
metadata_type=MetadataType.FEATURE_VIEW_METADATA,
|
|
627
|
+
)
|
|
628
|
+
if data is None:
|
|
629
|
+
return None
|
|
630
|
+
return FeatureViewMetadataConfig.from_dict(data)
|
|
631
|
+
|
|
573
632
|
# =========================================================================
|
|
574
633
|
# Rollup Config
|
|
575
634
|
# =========================================================================
|