snowflake-ml-python 1.7.4__tar.gz → 1.7.5__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.7.4 → snowflake_ml_python-1.7.5}/CHANGELOG.md +36 -5
- {snowflake_ml_python-1.7.4/snowflake_ml_python.egg-info → snowflake_ml_python-1.7.5}/PKG-INFO +58 -25
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/README.md +1 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/pyproject.toml +7 -7
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/env_utils.py +64 -21
- snowflake_ml_python-1.7.5/snowflake/ml/_internal/relax_version_strategy.py +16 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/telemetry.py +21 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/_internal/arrow_ingestor.py +1 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/feature_store.py +18 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/feature_view.py +46 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/constants.py +7 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/payload_utils.py +139 -53
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/spec_utils.py +5 -7
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/decorators.py +5 -25
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/job.py +4 -4
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_env/model_env.py +45 -28
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/_utils.py +8 -4
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +16 -0
- snowflake_ml_python-1.7.5/snowflake/ml/model/_packager/model_handlers/keras.py +230 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/pytorch.py +1 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/sklearn.py +28 -3
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +74 -21
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +27 -49
- snowflake_ml_python-1.7.5/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +48 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/model_meta.py +1 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +3 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +1 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +4 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_task/model_task_utils.py +5 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/core.py +2 -2
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/numpy_handler.py +5 -5
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/pandas_handler.py +9 -7
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/pytorch_handler.py +1 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/model_signature.py +8 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/type_hints.py +15 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +14 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/pipeline/pipeline.py +18 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/polynomial_features.py +2 -2
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/registry/registry.py +34 -4
- snowflake_ml_python-1.7.5/snowflake/ml/version.py +1 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5/snowflake_ml_python.egg-info}/PKG-INFO +58 -25
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/SOURCES.txt +3 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/requires.txt +19 -18
- snowflake_ml_python-1.7.4/snowflake/ml/version.py +0 -1
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/setup.cfg +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/_utils/types.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/jobs/manager.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/model/model_version_impl.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/ops/service_ops.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/service.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/_packaging_requirements.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/constants.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/model_monitor_version.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,27 +1,53 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
-
## 1.7.
|
3
|
+
## 1.7.5
|
4
|
+
|
5
|
+
- Support Python 3.12.
|
6
|
+
- Explainability: Support native and snowml sklearn pipeline
|
7
|
+
|
8
|
+
### Bug Fixes
|
9
|
+
|
10
|
+
- Registry: Fixed a compatibility issue when using `snowflake-ml-python` 1.7.0 or greater to save a `tensorflow.keras`
|
11
|
+
model with `keras` 2.x, if `relax_version` is set or default to True, and newer version of `snowflake-ml-python`
|
12
|
+
is available in Snowflake Anaconda Channel, model could not be run in Snowflake. If you have such model, you could
|
13
|
+
use the latest version of `snowflake-ml-python` and call `ModelVersion.load` to load it back, and re-log it.
|
14
|
+
Alternatively, you can prevent this issue by setting `relax_version=False` when saving the model.
|
15
|
+
- Registry: Removed the validation that disallows data that does not have non-null values being passed to
|
16
|
+
`ModelVersion.run`.
|
17
|
+
- ML Job (PrPr): No longer require CREATE STAGE privilege if `stage_name` points to an existing stage
|
18
|
+
- ML Job (PrPr): Fixed a bug causing some payload source and entrypoint path
|
19
|
+
combinations to be erroneously rejected with
|
20
|
+
`ValueError(f"{self.entrypoint} must be a subpath of {self.source}")`
|
21
|
+
- ML Job (PrPr): Fixed a bug in Ray cluster startup config which caused certain Runtime APIs to fail
|
22
|
+
|
23
|
+
### Behavior Change
|
24
|
+
|
25
|
+
### New Features
|
26
|
+
|
27
|
+
- Registry: Added support for handling Hugging Face model configurations with auto-mapping functionality.
|
28
|
+
- Registry: Added support for `keras` 3.x model with `tensorflow` and `pytorch` backend
|
29
|
+
- ML Job (PrPr): Support any serializable (pickleable) argument for `@remote` decorated functions
|
30
|
+
|
31
|
+
## 1.7.4 (01-28-2025)
|
4
32
|
|
5
33
|
- FileSet: The `snowflake.ml.fileset.FileSet` has been deprecated and will be removed in a future version.
|
6
34
|
Use [snowflake.ml.dataset.Dataset](https://docs.snowflake.com/en/developer-guide/snowflake-ml/dataset) and
|
7
35
|
[snowflake.ml.data.DataConnector](https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/api/data/snowflake.ml.data.data_connector.DataConnector)
|
8
36
|
instead.
|
37
|
+
- Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
|
9
38
|
|
10
39
|
### Bug Fixes
|
11
40
|
|
12
41
|
- Registry: Fixed an issue that the hugging face pipeline is loaded using incorrect dtype.
|
13
42
|
- Registry: Fixed an issue that only 1 row is used when infer the model signature in the modeling model.
|
14
43
|
|
15
|
-
### Behavior Changes
|
16
|
-
|
17
|
-
- Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
|
18
|
-
|
19
44
|
### New Features
|
20
45
|
|
21
46
|
- Add new `snowflake.ml.jobs` preview API for running headless workloads on SPCS using
|
22
47
|
[Container Runtime for ML](https://docs.snowflake.com/en/developer-guide/snowflake-ml/container-runtime-ml)
|
23
48
|
- Added `guardrails` option to Cortex `complete` function, enabling
|
24
49
|
[Cortex Guard](https://docs.snowflake.com/en/user-guide/snowflake-cortex/llm-functions#cortex-guard) support
|
50
|
+
- Model Monitoring: Expose Model Monitoring Python API by default.
|
25
51
|
|
26
52
|
## 1.7.3 (2025-01-08)
|
27
53
|
|
@@ -29,6 +55,7 @@
|
|
29
55
|
- Bumped the requirements of `fsspec` and `s3fs` to `>=2024.6.1,<2026`
|
30
56
|
- Bumped the requirement of `mlflow` to `>=2.16.0, <3`
|
31
57
|
- Registry: Support 500+ features for model registry
|
58
|
+
- Feature Store: Add support for `cluster_by` for feature views.
|
32
59
|
|
33
60
|
### Bug Fixes
|
34
61
|
|
@@ -146,6 +173,10 @@ class ExamplePipelineModel(custom_model.CustomModel):
|
|
146
173
|
- Data Connector: Add the option of passing a `None` sized batch to `to_torch_dataset` for better
|
147
174
|
interoperability with PyTorch DataLoader.
|
148
175
|
- Model Registry: Support [pandas.CategoricalDtype](https://pandas.pydata.org/docs/reference/api/pandas.CategoricalDtype.html#pandas-categoricaldtype)
|
176
|
+
- Limitations:
|
177
|
+
- The native categorical data handling handling by XGBoost using `enable_categorical=True` is not supported.
|
178
|
+
Instead please use [`sklearn.pipeline`](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html)
|
179
|
+
to preprocess the categorical datatype and log the pipeline with the XGBoost model.
|
149
180
|
- Registry: It is now possible to pass `signatures` and `sample_input_data` at the same time to capture background
|
150
181
|
data from explainablity and data lineage.
|
151
182
|
|
{snowflake_ml_python-1.7.4/snowflake_ml_python.egg-info → snowflake_ml_python-1.7.5}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: snowflake-ml-python
|
3
|
-
Version: 1.7.
|
3
|
+
Version: 1.7.5
|
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:
|
@@ -223,13 +223,14 @@ Classifier: Operating System :: OS Independent
|
|
223
223
|
Classifier: Programming Language :: Python :: 3.9
|
224
224
|
Classifier: Programming Language :: Python :: 3.10
|
225
225
|
Classifier: Programming Language :: Python :: 3.11
|
226
|
+
Classifier: Programming Language :: Python :: 3.12
|
226
227
|
Classifier: Topic :: Database
|
227
228
|
Classifier: Topic :: Software Development
|
228
229
|
Classifier: Topic :: Software Development :: Libraries
|
229
230
|
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
|
230
231
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
231
232
|
Classifier: Topic :: Scientific/Engineering :: Information Analysis
|
232
|
-
Requires-Python: <3.
|
233
|
+
Requires-Python: <3.13,>=3.9
|
233
234
|
Description-Content-Type: text/markdown
|
234
235
|
License-File: LICENSE.txt
|
235
236
|
Requires-Dist: absl-py<2,>=0.15
|
@@ -257,39 +258,40 @@ Requires-Dist: typing-extensions<5,>=4.1.0
|
|
257
258
|
Requires-Dist: xgboost<3,>=1.7.3
|
258
259
|
Provides-Extra: all
|
259
260
|
Requires-Dist: catboost<2,>=1.2.0; extra == "all"
|
260
|
-
Requires-Dist:
|
261
|
+
Requires-Dist: keras<4,>=2.0.0; extra == "all"
|
261
262
|
Requires-Dist: lightgbm<5,>=4.1.0; extra == "all"
|
262
263
|
Requires-Dist: mlflow<3,>=2.16.0; extra == "all"
|
263
|
-
Requires-Dist:
|
264
|
-
Requires-Dist:
|
265
|
-
Requires-Dist: sentencepiece<1,>=0.1.95; extra == "all"
|
264
|
+
Requires-Dist: sentence-transformers<3,>=2.7.0; extra == "all"
|
265
|
+
Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "all"
|
266
266
|
Requires-Dist: shap<1,>=0.46.0; extra == "all"
|
267
|
-
Requires-Dist: tensorflow<3,>=2.
|
268
|
-
Requires-Dist: tokenizers<1,>=0.
|
269
|
-
Requires-Dist: torch<
|
267
|
+
Requires-Dist: tensorflow<3,>=2.17.0; extra == "all"
|
268
|
+
Requires-Dist: tokenizers<1,>=0.15.1; extra == "all"
|
269
|
+
Requires-Dist: torch<3,>=2.0.1; extra == "all"
|
270
270
|
Requires-Dist: torchdata<1,>=0.4; extra == "all"
|
271
|
-
Requires-Dist: transformers<5,>=4.
|
271
|
+
Requires-Dist: transformers<5,>=4.37.2; extra == "all"
|
272
272
|
Provides-Extra: catboost
|
273
273
|
Requires-Dist: catboost<2,>=1.2.0; extra == "catboost"
|
274
|
+
Provides-Extra: keras
|
275
|
+
Requires-Dist: keras<4,>=2.0.0; extra == "keras"
|
276
|
+
Requires-Dist: tensorflow<3,>=2.17.0; extra == "keras"
|
277
|
+
Requires-Dist: torch<3,>=2.0.1; extra == "keras"
|
274
278
|
Provides-Extra: lightgbm
|
275
279
|
Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
|
276
|
-
Provides-Extra: llm
|
277
|
-
Requires-Dist: peft<1,>=0.5.0; extra == "llm"
|
278
280
|
Provides-Extra: mlflow
|
279
281
|
Requires-Dist: mlflow<3,>=2.16.0; extra == "mlflow"
|
280
282
|
Provides-Extra: shap
|
281
283
|
Requires-Dist: shap<1,>=0.46.0; extra == "shap"
|
282
284
|
Provides-Extra: tensorflow
|
283
|
-
Requires-Dist: tensorflow<3,>=2.
|
285
|
+
Requires-Dist: tensorflow<3,>=2.17.0; extra == "tensorflow"
|
284
286
|
Provides-Extra: torch
|
285
|
-
Requires-Dist: torch<
|
287
|
+
Requires-Dist: torch<3,>=2.0.1; extra == "torch"
|
286
288
|
Requires-Dist: torchdata<1,>=0.4; extra == "torch"
|
287
289
|
Provides-Extra: transformers
|
288
|
-
Requires-Dist:
|
289
|
-
Requires-Dist:
|
290
|
-
Requires-Dist:
|
291
|
-
Requires-Dist:
|
292
|
-
Requires-Dist: transformers<5,>=4.
|
290
|
+
Requires-Dist: sentence-transformers<3,>=2.7.0; extra == "transformers"
|
291
|
+
Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "transformers"
|
292
|
+
Requires-Dist: tokenizers<1,>=0.15.1; extra == "transformers"
|
293
|
+
Requires-Dist: torch<3,>=2.0.1; extra == "transformers"
|
294
|
+
Requires-Dist: transformers<5,>=4.37.2; extra == "transformers"
|
293
295
|
|
294
296
|
# Snowpark ML
|
295
297
|
|
@@ -346,7 +348,7 @@ If you don't have a Snowflake account yet, you can [sign up for a 30-day free tr
|
|
346
348
|
Follow the [installation instructions](https://docs.snowflake.com/en/developer-guide/snowpark-ml/index#installing-snowpark-ml)
|
347
349
|
in the Snowflake documentation.
|
348
350
|
|
349
|
-
Python versions 3.9 to 3.
|
351
|
+
Python versions 3.9 to 3.12 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
|
350
352
|
[anaconda](https://www.anaconda.com/) to create a Conda environment (recommended),
|
351
353
|
or [virtualenv](https://docs.python.org/3/tutorial/venv.html) to create a virtual environment.
|
352
354
|
|
@@ -399,28 +401,54 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
399
401
|
|
400
402
|
# Release History
|
401
403
|
|
402
|
-
## 1.7.
|
404
|
+
## 1.7.5
|
405
|
+
|
406
|
+
- Support Python 3.12.
|
407
|
+
- Explainability: Support native and snowml sklearn pipeline
|
408
|
+
|
409
|
+
### Bug Fixes
|
410
|
+
|
411
|
+
- Registry: Fixed a compatibility issue when using `snowflake-ml-python` 1.7.0 or greater to save a `tensorflow.keras`
|
412
|
+
model with `keras` 2.x, if `relax_version` is set or default to True, and newer version of `snowflake-ml-python`
|
413
|
+
is available in Snowflake Anaconda Channel, model could not be run in Snowflake. If you have such model, you could
|
414
|
+
use the latest version of `snowflake-ml-python` and call `ModelVersion.load` to load it back, and re-log it.
|
415
|
+
Alternatively, you can prevent this issue by setting `relax_version=False` when saving the model.
|
416
|
+
- Registry: Removed the validation that disallows data that does not have non-null values being passed to
|
417
|
+
`ModelVersion.run`.
|
418
|
+
- ML Job (PrPr): No longer require CREATE STAGE privilege if `stage_name` points to an existing stage
|
419
|
+
- ML Job (PrPr): Fixed a bug causing some payload source and entrypoint path
|
420
|
+
combinations to be erroneously rejected with
|
421
|
+
`ValueError(f"{self.entrypoint} must be a subpath of {self.source}")`
|
422
|
+
- ML Job (PrPr): Fixed a bug in Ray cluster startup config which caused certain Runtime APIs to fail
|
423
|
+
|
424
|
+
### Behavior Change
|
425
|
+
|
426
|
+
### New Features
|
427
|
+
|
428
|
+
- Registry: Added support for handling Hugging Face model configurations with auto-mapping functionality.
|
429
|
+
- Registry: Added support for `keras` 3.x model with `tensorflow` and `pytorch` backend
|
430
|
+
- ML Job (PrPr): Support any serializable (pickleable) argument for `@remote` decorated functions
|
431
|
+
|
432
|
+
## 1.7.4 (01-28-2025)
|
403
433
|
|
404
434
|
- FileSet: The `snowflake.ml.fileset.FileSet` has been deprecated and will be removed in a future version.
|
405
435
|
Use [snowflake.ml.dataset.Dataset](https://docs.snowflake.com/en/developer-guide/snowflake-ml/dataset) and
|
406
436
|
[snowflake.ml.data.DataConnector](https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/api/data/snowflake.ml.data.data_connector.DataConnector)
|
407
437
|
instead.
|
438
|
+
- Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
|
408
439
|
|
409
440
|
### Bug Fixes
|
410
441
|
|
411
442
|
- Registry: Fixed an issue that the hugging face pipeline is loaded using incorrect dtype.
|
412
443
|
- Registry: Fixed an issue that only 1 row is used when infer the model signature in the modeling model.
|
413
444
|
|
414
|
-
### Behavior Changes
|
415
|
-
|
416
|
-
- Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
|
417
|
-
|
418
445
|
### New Features
|
419
446
|
|
420
447
|
- Add new `snowflake.ml.jobs` preview API for running headless workloads on SPCS using
|
421
448
|
[Container Runtime for ML](https://docs.snowflake.com/en/developer-guide/snowflake-ml/container-runtime-ml)
|
422
449
|
- Added `guardrails` option to Cortex `complete` function, enabling
|
423
450
|
[Cortex Guard](https://docs.snowflake.com/en/user-guide/snowflake-cortex/llm-functions#cortex-guard) support
|
451
|
+
- Model Monitoring: Expose Model Monitoring Python API by default.
|
424
452
|
|
425
453
|
## 1.7.3 (2025-01-08)
|
426
454
|
|
@@ -428,6 +456,7 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
428
456
|
- Bumped the requirements of `fsspec` and `s3fs` to `>=2024.6.1,<2026`
|
429
457
|
- Bumped the requirement of `mlflow` to `>=2.16.0, <3`
|
430
458
|
- Registry: Support 500+ features for model registry
|
459
|
+
- Feature Store: Add support for `cluster_by` for feature views.
|
431
460
|
|
432
461
|
### Bug Fixes
|
433
462
|
|
@@ -545,6 +574,10 @@ class ExamplePipelineModel(custom_model.CustomModel):
|
|
545
574
|
- Data Connector: Add the option of passing a `None` sized batch to `to_torch_dataset` for better
|
546
575
|
interoperability with PyTorch DataLoader.
|
547
576
|
- Model Registry: Support [pandas.CategoricalDtype](https://pandas.pydata.org/docs/reference/api/pandas.CategoricalDtype.html#pandas-categoricaldtype)
|
577
|
+
- Limitations:
|
578
|
+
- The native categorical data handling handling by XGBoost using `enable_categorical=True` is not supported.
|
579
|
+
Instead please use [`sklearn.pipeline`](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html)
|
580
|
+
to preprocess the categorical datatype and log the pipeline with the XGBoost model.
|
548
581
|
- Registry: It is now possible to pass `signatures` and `sample_input_data` at the same time to capture background
|
549
582
|
data from explainablity and data lineage.
|
550
583
|
|
@@ -53,7 +53,7 @@ If you don't have a Snowflake account yet, you can [sign up for a 30-day free tr
|
|
53
53
|
Follow the [installation instructions](https://docs.snowflake.com/en/developer-guide/snowpark-ml/index#installing-snowpark-ml)
|
54
54
|
in the Snowflake documentation.
|
55
55
|
|
56
|
-
Python versions 3.9 to 3.
|
56
|
+
Python versions 3.9 to 3.12 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
|
57
57
|
[anaconda](https://www.anaconda.com/) to create a Conda environment (recommended),
|
58
58
|
or [virtualenv](https://docs.python.org/3/tutorial/venv.html) to create a virtual environment.
|
59
59
|
|
@@ -5,8 +5,8 @@ build-backend = "setuptools.build_meta"
|
|
5
5
|
[project]
|
6
6
|
name = "snowflake-ml-python"
|
7
7
|
description = "The machine learning client library that is used for interacting with Snowflake to build machine learning solutions."
|
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", "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
|
-
requires-python = ">=3.9, <3.
|
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
|
+
requires-python = ">=3.9, <3.13"
|
10
10
|
dynamic = [ "version", "readme",]
|
11
11
|
dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<2", "packaging>=20.9,<25", "pandas>=1.0.0,<3", "pyarrow", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn>=1.4,<1.6", "scipy>=1.9,<2", "snowflake-connector-python[pandas]>=3.5.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "sqlparse>=0.4,<1", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<3",]
|
12
12
|
[[project.authors]]
|
@@ -24,15 +24,15 @@ Issues = "https://github.com/snowflakedb/snowflake-ml-python/issues"
|
|
24
24
|
Changelog = "https://github.com/snowflakedb/snowflake-ml-python/blob/master/CHANGELOG.md"
|
25
25
|
|
26
26
|
[project.optional-dependencies]
|
27
|
-
all = [ "catboost>=1.2.0, <2", "
|
27
|
+
all = [ "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <3", "sentence-transformers>=2.7.0,<3", "sentencepiece>=0.1.95,<0.2.0", "shap>=0.46.0,<1", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.37.2,<5",]
|
28
28
|
catboost = [ "catboost>=1.2.0, <2",]
|
29
|
+
keras = [ "keras>=2.0.0,<4", "tensorflow>=2.17.0,<3", "torch>=2.0.1,<3",]
|
29
30
|
lightgbm = [ "lightgbm>=4.1.0, <5",]
|
30
|
-
llm = [ "peft>=0.5.0,<1",]
|
31
31
|
mlflow = [ "mlflow>=2.16.0, <3",]
|
32
32
|
shap = [ "shap>=0.46.0,<1",]
|
33
|
-
tensorflow = [ "tensorflow>=2.
|
34
|
-
torch = [ "torch>=2.0.1,<
|
35
|
-
transformers = [ "
|
33
|
+
tensorflow = [ "tensorflow>=2.17.0,<3",]
|
34
|
+
torch = [ "torch>=2.0.1,<3", "torchdata>=0.4,<1",]
|
35
|
+
transformers = [ "sentence-transformers>=2.7.0,<3", "sentencepiece>=0.1.95,<0.2.0", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "transformers>=4.37.2,<5",]
|
36
36
|
|
37
37
|
[tool.setuptools.package-data]
|
38
38
|
"*" = [ "*",]
|
@@ -12,7 +12,7 @@ import yaml
|
|
12
12
|
from packaging import requirements, specifiers, version
|
13
13
|
|
14
14
|
import snowflake.connector
|
15
|
-
from snowflake.ml._internal import env as snowml_env
|
15
|
+
from snowflake.ml._internal import env as snowml_env, relax_version_strategy
|
16
16
|
from snowflake.ml._internal.utils import query_result_checker
|
17
17
|
from snowflake.snowpark import context, exceptions, session
|
18
18
|
|
@@ -56,6 +56,8 @@ def _validate_pip_requirement_string(req_str: str) -> requirements.Requirement:
|
|
56
56
|
|
57
57
|
if r.name == "python":
|
58
58
|
raise ValueError("Don't specify python as a dependency, use python version argument instead.")
|
59
|
+
if r.name == "cuda":
|
60
|
+
raise ValueError("Don't specify cuda as a dependency, use cuda version argument instead.")
|
59
61
|
except requirements.InvalidRequirement:
|
60
62
|
raise ValueError(f"Invalid package requirement {req_str} found.")
|
61
63
|
|
@@ -313,19 +315,14 @@ def get_package_spec_with_supported_ops_only(req: requirements.Requirement) -> r
|
|
313
315
|
return new_req
|
314
316
|
|
315
317
|
|
316
|
-
def
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
Returns:
|
324
|
-
A new requirement object after relaxations.
|
325
|
-
"""
|
326
|
-
new_req = copy.deepcopy(req)
|
318
|
+
def _relax_specifier_set(
|
319
|
+
specifier_set: specifiers.SpecifierSet, strategy: relax_version_strategy.RelaxVersionStrategy
|
320
|
+
) -> specifiers.SpecifierSet:
|
321
|
+
if strategy == relax_version_strategy.RelaxVersionStrategy.NO_RELAX:
|
322
|
+
return specifier_set
|
323
|
+
specifier_set = copy.deepcopy(specifier_set)
|
327
324
|
relaxed_specifier_set = set()
|
328
|
-
for spec in
|
325
|
+
for spec in specifier_set._specs:
|
329
326
|
if spec.operator != "==":
|
330
327
|
relaxed_specifier_set.add(spec)
|
331
328
|
continue
|
@@ -337,9 +334,40 @@ def relax_requirement_version(req: requirements.Requirement) -> requirements.Req
|
|
337
334
|
relaxed_specifier_set.add(spec)
|
338
335
|
continue
|
339
336
|
assert pinned_version is not None
|
340
|
-
|
341
|
-
|
342
|
-
|
337
|
+
if strategy == relax_version_strategy.RelaxVersionStrategy.PATCH:
|
338
|
+
relaxed_specifier_set.add(specifiers.Specifier(f">={pinned_version.major}.{pinned_version.minor}"))
|
339
|
+
relaxed_specifier_set.add(specifiers.Specifier(f"<{pinned_version.major}.{pinned_version.minor+1}"))
|
340
|
+
elif strategy == relax_version_strategy.RelaxVersionStrategy.MINOR:
|
341
|
+
relaxed_specifier_set.add(specifiers.Specifier(f">={pinned_version.major}.{pinned_version.minor}"))
|
342
|
+
relaxed_specifier_set.add(specifiers.Specifier(f"<{pinned_version.major + 1}"))
|
343
|
+
elif strategy == relax_version_strategy.RelaxVersionStrategy.MAJOR:
|
344
|
+
relaxed_specifier_set.add(specifiers.Specifier(f">={pinned_version.major}"))
|
345
|
+
relaxed_specifier_set.add(specifiers.Specifier(f"<{pinned_version.major + 1}"))
|
346
|
+
specifier_set._specs = frozenset(relaxed_specifier_set)
|
347
|
+
return specifier_set
|
348
|
+
|
349
|
+
|
350
|
+
def relax_requirement_version(req: requirements.Requirement) -> requirements.Requirement:
|
351
|
+
"""Relax version specifier from a requirement. It detects any ==x.y.z in specifiers and replaced with relaxed
|
352
|
+
version specifier based on the strategy defined in RELAX_VERSION_STRATEGY_MAP.
|
353
|
+
|
354
|
+
NO_RELAX: No relaxation.
|
355
|
+
PATCH: >=x.y, <x.(y+1)
|
356
|
+
MINOR (default): >=x.y, <(x+1)
|
357
|
+
MAJOR: >=x, <(x+1)
|
358
|
+
|
359
|
+
|
360
|
+
Args:
|
361
|
+
req: The requirement that version specifier to be removed.
|
362
|
+
|
363
|
+
Returns:
|
364
|
+
A new requirement object after relaxations.
|
365
|
+
"""
|
366
|
+
new_req = copy.deepcopy(req)
|
367
|
+
strategy = relax_version_strategy.RELAX_VERSION_STRATEGY_MAP.get(
|
368
|
+
req.name, relax_version_strategy.RelaxVersionStrategy.MINOR
|
369
|
+
)
|
370
|
+
new_req.specifier = _relax_specifier_set(new_req.specifier, strategy)
|
343
371
|
return new_req
|
344
372
|
|
345
373
|
|
@@ -431,10 +459,11 @@ def save_conda_env_file(
|
|
431
459
|
path: pathlib.Path,
|
432
460
|
conda_chan_deps: DefaultDict[str, List[requirements.Requirement]],
|
433
461
|
python_version: str,
|
462
|
+
cuda_version: Optional[str] = None,
|
434
463
|
default_channel_override: str = SNOWFLAKE_CONDA_CHANNEL_URL,
|
435
464
|
) -> None:
|
436
465
|
"""Generate conda.yml file given a dict of dependencies after validation.
|
437
|
-
The channels part of conda.yml file will
|
466
|
+
The channels part of conda.yml file will contain Snowflake Anaconda Channel, nodefaults and all channel names
|
438
467
|
in keys of the dict, ordered by the number of the packages which belongs to.
|
439
468
|
The dependencies part of conda.yml file will contains requirements specifications. If the requirements is in the
|
440
469
|
value list whose key is DEFAULT_CHANNEL_NAME, then the channel won't be specified explicitly. Otherwise, it will be
|
@@ -443,7 +472,8 @@ def save_conda_env_file(
|
|
443
472
|
Args:
|
444
473
|
path: Path to the conda.yml file.
|
445
474
|
conda_chan_deps: Dict of conda dependencies after validated.
|
446
|
-
python_version: A string 'major.minor'
|
475
|
+
python_version: A string 'major.minor' for the model's python version.
|
476
|
+
cuda_version: A string 'major.minor' for the model's cuda version.
|
447
477
|
default_channel_override: The default channel to be put in the first place of the channels section.
|
448
478
|
"""
|
449
479
|
assert path.suffix in [".yml", ".yaml"], "Conda environment file should have extension of yml or yaml."
|
@@ -461,6 +491,10 @@ def save_conda_env_file(
|
|
461
491
|
|
462
492
|
env["channels"] = [default_channel_override] + channels + [_NODEFAULTS]
|
463
493
|
env["dependencies"] = [f"python=={python_version}.*"]
|
494
|
+
|
495
|
+
if cuda_version is not None:
|
496
|
+
env["dependencies"].extend([f"nvidia::cuda=={cuda_version}.*"])
|
497
|
+
|
464
498
|
for chan, reqs in conda_chan_deps.items():
|
465
499
|
env["dependencies"].extend(
|
466
500
|
[f"{chan}::{str(req)}" if chan != DEFAULT_CHANNEL_NAME else str(req) for req in reqs]
|
@@ -487,7 +521,12 @@ def save_requirements_file(path: pathlib.Path, pip_deps: List[requirements.Requi
|
|
487
521
|
|
488
522
|
def load_conda_env_file(
|
489
523
|
path: pathlib.Path,
|
490
|
-
) -> Tuple[
|
524
|
+
) -> Tuple[
|
525
|
+
DefaultDict[str, List[requirements.Requirement]],
|
526
|
+
Optional[List[requirements.Requirement]],
|
527
|
+
Optional[str],
|
528
|
+
Optional[str],
|
529
|
+
]:
|
491
530
|
"""Read conda.yml file to get a dict of dependencies after validation.
|
492
531
|
The channels part of conda.yml file will be processed with following rules:
|
493
532
|
1. If it is Snowflake Anaconda Channel, ignore as it is default.
|
@@ -515,7 +554,7 @@ def load_conda_env_file(
|
|
515
554
|
and a string 'major.minor.patchlevel' of python version.
|
516
555
|
"""
|
517
556
|
if not path.exists():
|
518
|
-
return collections.defaultdict(list), None, None
|
557
|
+
return collections.defaultdict(list), None, None, None
|
519
558
|
|
520
559
|
with open(path, encoding="utf-8") as f:
|
521
560
|
env = yaml.safe_load(stream=f)
|
@@ -526,6 +565,7 @@ def load_conda_env_file(
|
|
526
565
|
pip_deps = []
|
527
566
|
|
528
567
|
python_version = None
|
568
|
+
cuda_version = None
|
529
569
|
|
530
570
|
channels = env.get("channels", [])
|
531
571
|
if len(channels) >= 1:
|
@@ -541,6 +581,9 @@ def load_conda_env_file(
|
|
541
581
|
# ver is str: python w/ specifier
|
542
582
|
if ver:
|
543
583
|
python_version = ver
|
584
|
+
elif dep.startswith("nvidia::cuda"):
|
585
|
+
r = requirements.Requirement(dep.split("nvidia::")[1])
|
586
|
+
cuda_version = list(r.specifier)[0].version.strip(".*")
|
544
587
|
elif ver is None:
|
545
588
|
deps.append(dep)
|
546
589
|
elif isinstance(dep, dict) and "pip" in dep:
|
@@ -555,7 +598,7 @@ def load_conda_env_file(
|
|
555
598
|
if channel not in conda_dep_dict:
|
556
599
|
conda_dep_dict[channel] = []
|
557
600
|
|
558
|
-
return conda_dep_dict, pip_deps_list if pip_deps_list else None, python_version
|
601
|
+
return conda_dep_dict, pip_deps_list if pip_deps_list else None, python_version, cuda_version
|
559
602
|
|
560
603
|
|
561
604
|
def load_requirements_file(path: pathlib.Path) -> List[requirements.Requirement]:
|
@@ -0,0 +1,16 @@
|
|
1
|
+
from enum import Enum
|
2
|
+
|
3
|
+
|
4
|
+
class RelaxVersionStrategy(Enum):
|
5
|
+
NO_RELAX = "no_relax"
|
6
|
+
PATCH = "patch"
|
7
|
+
MINOR = "minor"
|
8
|
+
MAJOR = "major"
|
9
|
+
|
10
|
+
|
11
|
+
RELAX_VERSION_STRATEGY_MAP = {
|
12
|
+
# The version of cloudpickle should not be relaxed as it is used for serialization.
|
13
|
+
"cloudpickle": RelaxVersionStrategy.NO_RELAX,
|
14
|
+
# The version of scikit-learn should be relaxed only in patch version as it has breaking changes in minor version.
|
15
|
+
"scikit-learn": RelaxVersionStrategy.PATCH,
|
16
|
+
}
|
@@ -4,6 +4,9 @@ import enum
|
|
4
4
|
import functools
|
5
5
|
import inspect
|
6
6
|
import operator
|
7
|
+
import sys
|
8
|
+
import time
|
9
|
+
import traceback
|
7
10
|
import types
|
8
11
|
from typing import (
|
9
12
|
Any,
|
@@ -75,6 +78,8 @@ class TelemetryField(enum.Enum):
|
|
75
78
|
KEY_FUNC_PARAMS = "func_params"
|
76
79
|
KEY_ERROR_INFO = "error_info"
|
77
80
|
KEY_ERROR_CODE = "error_code"
|
81
|
+
KEY_STACK_TRACE = "stack_trace"
|
82
|
+
KEY_DURATION = "duration"
|
78
83
|
KEY_VERSION = "version"
|
79
84
|
KEY_PYTHON_VERSION = "python_version"
|
80
85
|
KEY_OS = "operating_system"
|
@@ -435,6 +440,7 @@ def send_api_usage_telemetry(
|
|
435
440
|
|
436
441
|
# noqa: DAR402
|
437
442
|
"""
|
443
|
+
start_time = time.perf_counter()
|
438
444
|
|
439
445
|
if subproject is not None and subproject_extractor is not None:
|
440
446
|
raise ValueError("Specifying both subproject and subproject_extractor is not allowed")
|
@@ -555,8 +561,16 @@ def send_api_usage_telemetry(
|
|
555
561
|
)
|
556
562
|
else:
|
557
563
|
me = e
|
564
|
+
|
558
565
|
telemetry_args["error"] = repr(me)
|
559
566
|
telemetry_args["error_code"] = me.error_code
|
567
|
+
# exclude telemetry frames
|
568
|
+
excluded_frames = 2
|
569
|
+
tb = traceback.extract_tb(sys.exc_info()[2])
|
570
|
+
formatted_tb = "".join(traceback.format_list(tb[excluded_frames:]))
|
571
|
+
formatted_exception = traceback.format_exception_only(*sys.exc_info()[:2])[0] # error type + message
|
572
|
+
telemetry_args["stack_trace"] = formatted_tb + formatted_exception
|
573
|
+
|
560
574
|
me.original_exception._snowflake_ml_handled = True # type: ignore[attr-defined]
|
561
575
|
if e is not me:
|
562
576
|
raise # Directly raise non-wrapped exceptions to preserve original stacktrace
|
@@ -565,6 +579,7 @@ def send_api_usage_telemetry(
|
|
565
579
|
else:
|
566
580
|
raise me.original_exception from e
|
567
581
|
finally:
|
582
|
+
telemetry_args["duration"] = time.perf_counter() - start_time # type: ignore[assignment]
|
568
583
|
telemetry.send_function_usage_telemetry(**telemetry_args)
|
569
584
|
global _log_counter
|
570
585
|
_log_counter += 1
|
@@ -718,12 +733,14 @@ class _SourceTelemetryClient:
|
|
718
733
|
self,
|
719
734
|
func_name: str,
|
720
735
|
function_category: str,
|
736
|
+
duration: float,
|
721
737
|
func_params: Optional[Dict[str, Any]] = None,
|
722
738
|
api_calls: Optional[List[Dict[str, Any]]] = None,
|
723
739
|
sfqids: Optional[List[Any]] = None,
|
724
740
|
custom_tags: Optional[Dict[str, Union[bool, int, str, float]]] = None,
|
725
741
|
error: Optional[str] = None,
|
726
742
|
error_code: Optional[str] = None,
|
743
|
+
stack_trace: Optional[str] = None,
|
727
744
|
) -> None:
|
728
745
|
"""
|
729
746
|
Send function usage telemetry message.
|
@@ -731,12 +748,14 @@ class _SourceTelemetryClient:
|
|
731
748
|
Args:
|
732
749
|
func_name: Function name.
|
733
750
|
function_category: Function category.
|
751
|
+
duration: Function duration.
|
734
752
|
func_params: Function parameters.
|
735
753
|
api_calls: API calls.
|
736
754
|
sfqids: Snowflake query IDs.
|
737
755
|
custom_tags: Custom tags.
|
738
756
|
error: Error.
|
739
757
|
error_code: Error code.
|
758
|
+
stack_trace: Error stack trace.
|
740
759
|
"""
|
741
760
|
data: Dict[str, Any] = {
|
742
761
|
TelemetryField.KEY_FUNC_NAME.value: func_name,
|
@@ -755,11 +774,13 @@ class _SourceTelemetryClient:
|
|
755
774
|
message: Dict[str, Any] = {
|
756
775
|
**self._create_basic_telemetry_data(telemetry_type),
|
757
776
|
TelemetryField.KEY_DATA.value: data,
|
777
|
+
TelemetryField.KEY_DURATION.value: duration,
|
758
778
|
}
|
759
779
|
|
760
780
|
if error:
|
761
781
|
message[TelemetryField.KEY_ERROR_INFO.value] = error
|
762
782
|
message[TelemetryField.KEY_ERROR_CODE.value] = error_code
|
783
|
+
message[TelemetryField.KEY_STACK_TRACE.value] = stack_trace
|
763
784
|
|
764
785
|
self._send(message)
|
765
786
|
|
@@ -116,7 +116,7 @@ class ArrowIngestor(data_ingestor.DataIngestor):
|
|
116
116
|
def to_pandas(self, limit: Optional[int] = None) -> pd.DataFrame:
|
117
117
|
ds = self._get_dataset(shuffle=False)
|
118
118
|
table = ds.to_table() if limit is None else ds.head(num_rows=limit)
|
119
|
-
return table.to_pandas()
|
119
|
+
return table.to_pandas(split_blocks=True, self_destruct=True)
|
120
120
|
|
121
121
|
def _get_dataset(self, shuffle: bool) -> pds.Dataset:
|
122
122
|
format = self._format
|
{snowflake_ml_python-1.7.4 → snowflake_ml_python-1.7.5}/snowflake/ml/feature_store/feature_store.py
RENAMED
@@ -144,6 +144,7 @@ _LIST_FEATURE_VIEW_SCHEMA = StructType(
|
|
144
144
|
StructField("refresh_mode", StringType()),
|
145
145
|
StructField("scheduling_state", StringType()),
|
146
146
|
StructField("warehouse", StringType()),
|
147
|
+
StructField("cluster_by", StringType()),
|
147
148
|
]
|
148
149
|
)
|
149
150
|
|
@@ -1832,6 +1833,12 @@ class FeatureStore:
|
|
1832
1833
|
WAREHOUSE = {warehouse}
|
1833
1834
|
REFRESH_MODE = {feature_view.refresh_mode}
|
1834
1835
|
INITIALIZE = {feature_view.initialize}
|
1836
|
+
"""
|
1837
|
+
if feature_view.cluster_by:
|
1838
|
+
cluster_by_clause = f"CLUSTER BY ({', '.join(feature_view.cluster_by)})"
|
1839
|
+
query += f"{cluster_by_clause}"
|
1840
|
+
|
1841
|
+
query += f"""
|
1835
1842
|
AS {feature_view.query}
|
1836
1843
|
"""
|
1837
1844
|
self._session.sql(query).collect(block=block, statement_params=self._telemetry_stmp)
|
@@ -2249,6 +2256,7 @@ class FeatureStore:
|
|
2249
2256
|
values.append(row["refresh_mode"] if "refresh_mode" in row else None)
|
2250
2257
|
values.append(row["scheduling_state"] if "scheduling_state" in row else None)
|
2251
2258
|
values.append(row["warehouse"] if "warehouse" in row else None)
|
2259
|
+
values.append(json.dumps(self._extract_cluster_by_columns(row["cluster_by"])) if "cluster_by" in row else None)
|
2252
2260
|
output_values.append(values)
|
2253
2261
|
|
2254
2262
|
def _lookup_feature_view_metadata(self, row: Row, fv_name: str) -> Tuple[_FeatureViewMetadata, str]:
|
@@ -2335,6 +2343,7 @@ class FeatureStore:
|
|
2335
2343
|
owner=row["owner"],
|
2336
2344
|
infer_schema_df=infer_schema_df,
|
2337
2345
|
session=self._session,
|
2346
|
+
cluster_by=self._extract_cluster_by_columns(row["cluster_by"]),
|
2338
2347
|
)
|
2339
2348
|
return fv
|
2340
2349
|
else:
|
@@ -2625,3 +2634,12 @@ class FeatureStore:
|
|
2625
2634
|
)
|
2626
2635
|
|
2627
2636
|
return feature_view
|
2637
|
+
|
2638
|
+
@staticmethod
|
2639
|
+
def _extract_cluster_by_columns(cluster_by_clause: str) -> List[str]:
|
2640
|
+
# Use regex to extract elements inside the parentheses.
|
2641
|
+
match = re.search(r"\((.*?)\)", cluster_by_clause)
|
2642
|
+
if match:
|
2643
|
+
# Handle both quoted and unquoted column names.
|
2644
|
+
return re.findall(identifier.SF_IDENTIFIER_RE, match.group(1))
|
2645
|
+
return []
|