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