snowflake-ml-python 1.39.0__tar.gz → 1.41.0__tar.gz

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