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.
Files changed (545) hide show
  1. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/CHANGELOG.md +33 -1
  2. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/PKG-INFO +35 -3
  3. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/pyproject.toml +1 -1
  4. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/env_utils.py +11 -9
  5. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/_compute_fn_validation.py +1 -1
  6. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_store.py +100 -35
  7. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_view.py +14 -0
  8. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/metadata_manager.py +61 -2
  9. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/builder.py +204 -7
  10. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/models.py +141 -3
  11. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/stream_config.py +20 -0
  12. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/streaming_registration.py +12 -1
  13. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/tile_sql_generator.py +333 -50
  14. snowflake_ml_python-1.42.0/snowflake/ml/jobs/_interop/__init__.py +12 -0
  15. snowflake_ml_python-1.42.0/snowflake/ml/jobs/_utils/scripts/__init__.py +13 -0
  16. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +1 -1
  17. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +2 -2
  18. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +25 -17
  19. snowflake_ml_python-1.42.0/snowflake/ml/jobs/_utils/scripts/signal_workers_test.py +209 -0
  20. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +8 -5
  21. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/stage_utils.py +1 -0
  22. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/job.py +30 -7
  23. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/model_version_impl.py +5 -1
  24. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/service_ops.py +74 -23
  25. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -4
  26. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/service.py +42 -1
  27. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_handler.py +6 -0
  28. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/question_answering.py +7 -2
  29. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/summarization.py +7 -2
  30. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text2text_generation.py +7 -2
  31. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/translation.py +7 -2
  32. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/keras.py +3 -3
  33. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +160 -34
  34. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +21 -1
  35. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +3 -0
  36. snowflake_ml_python-1.42.0/snowflake/ml/model/_packager/model_meta/model_sample_input_data.py +251 -0
  37. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_packager.py +14 -2
  38. {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
  39. snowflake_ml_python-1.42.0/snowflake/ml/model/_packager/model_save_options.py +140 -0
  40. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/type_hints.py +10 -0
  41. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/_manager/model_manager.py +18 -0
  42. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/registry.py +10 -0
  43. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/version.py +1 -1
  44. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/PKG-INFO +35 -3
  45. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/SOURCES.txt +4 -0
  46. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/requires.txt +1 -1
  47. snowflake_ml_python-1.41.0/snowflake/ml/jobs/_utils/__init__.py +0 -0
  48. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/LICENSE.txt +0 -0
  49. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/README.md +0 -0
  50. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/setup.cfg +0 -0
  51. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/__init__.py +0 -0
  52. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_classify_text.py +0 -0
  53. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_complete.py +0 -0
  54. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_embed_text_1024.py +0 -0
  55. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_embed_text_768.py +0 -0
  56. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_extract_answer.py +0 -0
  57. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_finetune.py +0 -0
  58. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_sentiment.py +0 -0
  59. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_sse_client.py +0 -0
  60. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_summarize.py +0 -0
  61. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_translate.py +0 -0
  62. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/cortex/_util.py +0 -0
  63. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/env.py +0 -0
  64. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  65. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  66. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  67. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  68. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  69. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  70. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  71. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  72. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  73. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/file_utils.py +0 -0
  74. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  75. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  76. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  77. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  78. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/init_utils.py +0 -0
  79. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  80. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
  81. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
  82. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
  83. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/telemetry.py +0 -0
  84. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/type_utils.py +0 -0
  85. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
  86. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  87. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
  88. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
  89. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  90. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  91. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
  92. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  93. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  94. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
  95. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/result.py +0 -0
  96. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
  97. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  98. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  99. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  100. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  101. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/tee.py +0 -0
  102. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  103. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/_internal/utils/url.py +0 -0
  104. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/__init__.py +0 -0
  105. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
  106. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/data_connector.py +0 -0
  107. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/data_ingestor.py +0 -0
  108. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/data_source.py +0 -0
  109. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/ingestor_utils.py +0 -0
  110. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/data/torch_utils.py +0 -0
  111. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/__init__.py +0 -0
  112. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset.py +0 -0
  113. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
  114. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  115. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
  116. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/__init__.py +0 -0
  117. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
  118. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
  119. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
  120. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
  121. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/run.py +0 -0
  122. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
  123. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
  124. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_logging/__init__.py +0 -0
  125. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_logging/experiment_logger.py +0 -0
  126. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/_logging/experiment_logging_context.py +0 -0
  127. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/callback/keras.py +0 -0
  128. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
  129. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
  130. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
  131. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/experiment/utils.py +0 -0
  132. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/__init__.py +0 -0
  133. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/access_manager.py +0 -0
  134. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/aggregation.py +0 -0
  135. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/entity.py +0 -0
  136. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  137. {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
  138. {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
  139. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  140. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  141. {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
  142. {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
  143. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  144. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  145. {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
  146. {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
  147. {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
  148. {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
  149. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  150. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  151. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  152. {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
  153. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  154. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  155. {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
  156. {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
  157. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  158. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature.py +0 -0
  159. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_group.py +0 -0
  160. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_view_append_only_validation.py +0 -0
  161. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/feature_view_refresh_freq.py +0 -0
  162. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/interval_utils.py +0 -0
  163. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/online_service.py +0 -0
  164. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/online_service_http_client.py +0 -0
  165. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_config.py +0 -0
  166. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_dataset.py +0 -0
  167. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_dataset_udf.py +0 -0
  168. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/realtime_registration.py +0 -0
  169. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/request_source.py +0 -0
  170. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/__init__.py +0 -0
  171. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/enums.py +0 -0
  172. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/spec/table_schema_evolution.py +0 -0
  173. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/feature_store/stream_source.py +0 -0
  174. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  175. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/fileset.py +0 -0
  176. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/sfcfs.py +0 -0
  177. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/snowfs.py +0 -0
  178. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/fileset/stage_fs.py +0 -0
  179. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/__init__.py +0 -0
  180. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/data_utils.py +0 -0
  181. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/dto_schema.py +0 -0
  182. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/exception_utils.py +0 -0
  183. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/legacy.py +0 -0
  184. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/protocols.py +0 -0
  185. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/results.py +0 -0
  186. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_interop/utils.py +0 -0
  187. {snowflake_ml_python-1.41.0/snowflake/ml/jobs/_interop → snowflake_ml_python-1.42.0/snowflake/ml/jobs/_utils}/__init__.py +0 -0
  188. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/arg_protocol.py +0 -0
  189. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
  190. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
  191. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
  192. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
  193. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
  194. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
  195. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/start_mlruntime.sh +0 -0
  196. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/scripts/startup.sh +0 -0
  197. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/_utils/type_utils.py +0 -0
  198. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/decorators.py +0 -0
  199. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/job_definition.py +0 -0
  200. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/jobs/manager.py +0 -0
  201. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/lineage/__init__.py +0 -0
  202. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/lineage/lineage_node.py +0 -0
  203. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/__init__.py +0 -0
  204. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/batch_inference_serialization.py +0 -0
  205. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +0 -0
  206. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/batch_inference_task.py +0 -0
  207. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
  208. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  209. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/deployment_step.py +0 -0
  210. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  211. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
  212. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/param_ops.py +0 -0
  213. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/ops/param_utils.py +0 -0
  214. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/service/import_model_spec_schema.py +0 -0
  215. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
  216. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
  217. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/model.py +0 -0
  218. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
  219. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
  220. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
  221. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
  222. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
  223. {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
  224. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  225. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
  226. {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
  227. {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
  228. {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
  229. {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
  230. {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
  231. {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
  232. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
  233. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_model_composer/model_method/utils.py +0 -0
  234. {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
  235. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
  236. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
  237. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  238. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
  239. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  240. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  241. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/__init__.py +0 -0
  242. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_default.py +0 -0
  243. {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
  244. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_task_handler.py +0 -0
  245. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/_utils.py +0 -0
  246. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/audio_classification.py +0 -0
  247. {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
  248. {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
  249. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/conversational.py +0 -0
  250. {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
  251. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/fill_mask.py +0 -0
  252. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/image_classification.py +0 -0
  253. {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
  254. {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
  255. {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
  256. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/object_detection.py +0 -0
  257. {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
  258. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_classification.py +0 -0
  259. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/text_generation.py +0 -0
  260. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/token_classification.py +0 -0
  261. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/huggingface/video_classification.py +0 -0
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  269. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
  270. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/prophet.py +0 -0
  271. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
  272. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
  273. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
  274. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
  275. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  276. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  277. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  278. {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
  279. {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
  280. {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
  281. {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
  282. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  283. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  284. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  285. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  286. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
  287. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
  288. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  289. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  290. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/core.py +0 -0
  291. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
  292. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
  293. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
  294. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
  295. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
  296. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  297. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/_signatures/utils.py +0 -0
  298. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/batch/__init__.py +0 -0
  299. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/code_path.py +0 -0
  300. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/compute_pool.py +0 -0
  301. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/custom_model.py +0 -0
  302. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/event_handler.py +0 -0
  303. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/inference_engine.py +0 -0
  304. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/model_signature.py +0 -0
  305. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/models/huggingface.py +0 -0
  306. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
  307. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/openai_signatures.py +0 -0
  308. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/target_platform.py +0 -0
  309. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/task.py +0 -0
  310. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/model/volatility.py +0 -0
  311. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
  312. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  313. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
  314. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  315. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  316. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  317. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  318. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  319. {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
  320. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
  321. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
  322. {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
  323. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  324. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  325. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
  326. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  327. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
  328. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
  329. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
  330. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
  331. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
  332. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
  333. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
  334. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
  335. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
  336. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
  337. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
  338. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
  339. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
  340. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
  341. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
  342. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
  343. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  344. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
  345. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
  346. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
  347. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
  348. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
  349. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
  350. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
  351. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
  352. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  353. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
  354. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
  355. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
  356. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
  357. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
  358. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
  359. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
  360. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
  361. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
  362. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
  363. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  364. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
  365. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
  366. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  367. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
  368. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
  369. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
  370. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
  371. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
  372. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
  373. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
  374. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
  375. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
  376. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
  377. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
  378. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
  379. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
  380. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
  381. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
  382. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
  383. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  384. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
  385. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
  386. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
  387. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
  388. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
  389. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
  390. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
  391. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
  392. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
  393. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/framework/base.py +0 -0
  394. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  395. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
  396. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
  397. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
  398. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
  399. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
  400. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
  401. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  402. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  403. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
  404. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
  405. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
  406. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
  407. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
  408. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  409. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
  410. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  411. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
  412. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
  413. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  414. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
  415. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
  416. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
  417. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
  418. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
  419. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
  420. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
  421. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
  422. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
  423. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
  424. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
  425. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
  426. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
  427. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
  428. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
  429. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
  430. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
  431. {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
  432. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
  433. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
  434. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
  435. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
  436. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
  437. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
  438. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
  439. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
  440. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
  441. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
  442. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
  443. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
  444. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
  445. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
  446. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
  447. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
  448. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
  449. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  450. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
  451. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
  452. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
  453. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
  454. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  455. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
  456. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  457. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  458. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  459. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  460. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
  461. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  462. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
  463. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
  464. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  465. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  466. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  467. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  468. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
  469. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
  470. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
  471. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  472. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
  473. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
  474. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
  475. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
  476. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
  477. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  478. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
  479. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
  480. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
  481. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
  482. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
  483. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
  484. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
  485. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
  486. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
  487. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  488. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
  489. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
  490. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
  491. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  492. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  493. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  494. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  495. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
  496. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  497. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  498. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  499. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  500. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  501. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  502. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  503. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  504. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  505. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
  506. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  507. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  508. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  509. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
  510. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
  511. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
  512. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
  513. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
  514. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
  515. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
  516. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/svc.py +0 -0
  517. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/svm/svr.py +0 -0
  518. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
  519. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
  520. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
  521. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
  522. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
  523. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  524. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
  525. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
  526. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
  527. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
  528. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
  529. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  530. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  531. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
  532. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
  533. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
  534. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
  535. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/monitoring/shap.py +0 -0
  536. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/__init__.py +0 -0
  537. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -0
  538. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/authentication.py +0 -0
  539. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/connection_params.py +0 -0
  540. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/html_utils.py +0 -0
  541. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/sparse.py +0 -0
  542. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/sql_client.py +0 -0
  543. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake/ml/utils/stage_file.py +0 -0
  544. {snowflake_ml_python-1.41.0 → snowflake_ml_python-1.42.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  545. {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.41.0
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.41.0
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<19.0.0
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.41.0
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<19.0.0", "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",]
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"
@@ -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 the presence of a ``conda-meta`` directory under :py:data:`sys.prefix`, which is
64
- standard for conda-created environments. A nested venv typically has ``sys.prefix``
65
- pointing at the venv without ``conda-meta``; conda still sets ``CONDA_PREFIX`` when
66
- an environment is activated, so a non-empty ``CONDA_PREFIX`` is treated as conda context.
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`` or ``CONDA_PREFIX`` is set and
70
- non-empty, else ``False``.
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
- if os.path.isdir(os.path.join(sys.prefix, "conda-meta")):
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
- # Snapshot status table is created lazily by _ensure_snapshot_status_table_exists
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 '{join_keys_str}'
740
- COMMENT = '{entity.desc}'
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 = '{new_desc}'").collect(
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 descs atomically in a single statement
1043
- self._metadata_manager.save_feature_view_metadata(feature_view.name, version, agg_metadata, descs)
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 = '{desc}'")], []
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}'" f" WAREHOUSE = {wh} COMMENT = '{comment}'",
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 = '{feature_view.desc}'
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 = '{feature_view.desc}'
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
- """Lazily create the snapshot status table if it does not already exist."""
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
- # The status table is created lazily by ``_ensure_snapshot_status_table_exists``
5302
- # only on append_only registration paths. If no append_only FV was ever registered
5303
- # in this schema, the table won't exist and the DELETE is a vacuous no-op.
5304
- # Re-raise anything other than "object does not exist" (2003).
5305
- if e.sql_error_code != 2003:
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 = '{feature_view.desc}'
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 = '{feature_view.desc}'
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
- # Validate offline columns for the OFT spec. Tiled FVs: introspect the materialized DT
7895
- # so offline_configs match the table; reject ARRAY/BINARY/etc. per spec rules.
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
- validate_spec_oft_offline_table_schema(pg_offline_dt_schema)
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: For tiled batch FVs, Snowpark schema of the materialized
7997
- dynamic table (from ``Session.table(fq_dt).schema``). Required when
7998
- ``feature_view.is_tiled``; must be ``None`` for non-tiled batch.
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*, or non-tiled batch
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
- if offline_materialized_schema is not None:
8037
- raise ValueError("Non-tiled batch feature view spec must not set offline_materialized_schema.")
8038
- offline_columns = feature_view.output_schema
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
 
@@ -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 both feature specs and descriptions in a single
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
  # =========================================================================