snowflake-ml-python 1.2.1__py3-none-any.whl → 1.2.2__py3-none-any.whl

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 (178) hide show
  1. snowflake/ml/_internal/env_utils.py +16 -13
  2. snowflake/ml/_internal/exceptions/modeling_error_messages.py +5 -1
  3. snowflake/ml/feature_store/__init__.py +9 -0
  4. snowflake/ml/feature_store/entity.py +73 -0
  5. snowflake/ml/feature_store/feature_store.py +1657 -0
  6. snowflake/ml/feature_store/feature_view.py +459 -0
  7. snowflake/ml/model/_deploy_client/image_builds/server_image_builder.py +9 -1
  8. snowflake/ml/model/_deploy_client/snowservice/deploy.py +2 -0
  9. snowflake/ml/model/_deploy_client/snowservice/deploy_options.py +12 -2
  10. snowflake/ml/model/_deploy_client/utils/snowservice_client.py +7 -3
  11. snowflake/ml/model/model_signature.py +72 -16
  12. snowflake/ml/model/type_hints.py +9 -0
  13. snowflake/ml/modeling/_internal/estimator_protocols.py +1 -41
  14. snowflake/ml/modeling/_internal/model_trainer_builder.py +13 -9
  15. snowflake/ml/modeling/_internal/{distributed_hpo_trainer.py → snowpark_implementations/distributed_hpo_trainer.py} +3 -1
  16. snowflake/ml/modeling/_internal/{xgboost_external_memory_trainer.py → snowpark_implementations/xgboost_external_memory_trainer.py} +3 -1
  17. snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +3 -3
  18. snowflake/ml/modeling/cluster/affinity_propagation.py +3 -3
  19. snowflake/ml/modeling/cluster/agglomerative_clustering.py +3 -3
  20. snowflake/ml/modeling/cluster/birch.py +3 -3
  21. snowflake/ml/modeling/cluster/bisecting_k_means.py +3 -3
  22. snowflake/ml/modeling/cluster/dbscan.py +3 -3
  23. snowflake/ml/modeling/cluster/feature_agglomeration.py +3 -3
  24. snowflake/ml/modeling/cluster/k_means.py +3 -3
  25. snowflake/ml/modeling/cluster/mean_shift.py +3 -3
  26. snowflake/ml/modeling/cluster/mini_batch_k_means.py +3 -3
  27. snowflake/ml/modeling/cluster/optics.py +3 -3
  28. snowflake/ml/modeling/cluster/spectral_biclustering.py +3 -3
  29. snowflake/ml/modeling/cluster/spectral_clustering.py +3 -3
  30. snowflake/ml/modeling/cluster/spectral_coclustering.py +3 -3
  31. snowflake/ml/modeling/compose/column_transformer.py +3 -3
  32. snowflake/ml/modeling/compose/transformed_target_regressor.py +3 -3
  33. snowflake/ml/modeling/covariance/elliptic_envelope.py +3 -3
  34. snowflake/ml/modeling/covariance/empirical_covariance.py +3 -3
  35. snowflake/ml/modeling/covariance/graphical_lasso.py +3 -3
  36. snowflake/ml/modeling/covariance/graphical_lasso_cv.py +3 -3
  37. snowflake/ml/modeling/covariance/ledoit_wolf.py +3 -3
  38. snowflake/ml/modeling/covariance/min_cov_det.py +3 -3
  39. snowflake/ml/modeling/covariance/oas.py +3 -3
  40. snowflake/ml/modeling/covariance/shrunk_covariance.py +3 -3
  41. snowflake/ml/modeling/decomposition/dictionary_learning.py +3 -3
  42. snowflake/ml/modeling/decomposition/factor_analysis.py +3 -3
  43. snowflake/ml/modeling/decomposition/fast_ica.py +3 -3
  44. snowflake/ml/modeling/decomposition/incremental_pca.py +3 -3
  45. snowflake/ml/modeling/decomposition/kernel_pca.py +3 -3
  46. snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +3 -3
  47. snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +3 -3
  48. snowflake/ml/modeling/decomposition/pca.py +3 -3
  49. snowflake/ml/modeling/decomposition/sparse_pca.py +3 -3
  50. snowflake/ml/modeling/decomposition/truncated_svd.py +3 -3
  51. snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +3 -3
  52. snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +3 -3
  53. snowflake/ml/modeling/ensemble/ada_boost_classifier.py +3 -3
  54. snowflake/ml/modeling/ensemble/ada_boost_regressor.py +3 -3
  55. snowflake/ml/modeling/ensemble/bagging_classifier.py +3 -3
  56. snowflake/ml/modeling/ensemble/bagging_regressor.py +3 -3
  57. snowflake/ml/modeling/ensemble/extra_trees_classifier.py +3 -3
  58. snowflake/ml/modeling/ensemble/extra_trees_regressor.py +3 -3
  59. snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +3 -3
  60. snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +3 -3
  61. snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +3 -3
  62. snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +3 -3
  63. snowflake/ml/modeling/ensemble/isolation_forest.py +3 -3
  64. snowflake/ml/modeling/ensemble/random_forest_classifier.py +3 -3
  65. snowflake/ml/modeling/ensemble/random_forest_regressor.py +3 -3
  66. snowflake/ml/modeling/ensemble/stacking_regressor.py +3 -3
  67. snowflake/ml/modeling/ensemble/voting_classifier.py +3 -3
  68. snowflake/ml/modeling/ensemble/voting_regressor.py +3 -3
  69. snowflake/ml/modeling/feature_selection/generic_univariate_select.py +3 -3
  70. snowflake/ml/modeling/feature_selection/select_fdr.py +3 -3
  71. snowflake/ml/modeling/feature_selection/select_fpr.py +3 -3
  72. snowflake/ml/modeling/feature_selection/select_fwe.py +3 -3
  73. snowflake/ml/modeling/feature_selection/select_k_best.py +3 -3
  74. snowflake/ml/modeling/feature_selection/select_percentile.py +3 -3
  75. snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +3 -3
  76. snowflake/ml/modeling/feature_selection/variance_threshold.py +3 -3
  77. snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +3 -3
  78. snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +3 -3
  79. snowflake/ml/modeling/impute/iterative_imputer.py +3 -3
  80. snowflake/ml/modeling/impute/knn_imputer.py +3 -3
  81. snowflake/ml/modeling/impute/missing_indicator.py +3 -3
  82. snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +3 -3
  83. snowflake/ml/modeling/kernel_approximation/nystroem.py +3 -3
  84. snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +3 -3
  85. snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +3 -3
  86. snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +3 -3
  87. snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +3 -3
  88. snowflake/ml/modeling/lightgbm/lgbm_classifier.py +3 -3
  89. snowflake/ml/modeling/lightgbm/lgbm_regressor.py +3 -3
  90. snowflake/ml/modeling/linear_model/ard_regression.py +3 -3
  91. snowflake/ml/modeling/linear_model/bayesian_ridge.py +3 -3
  92. snowflake/ml/modeling/linear_model/elastic_net.py +3 -3
  93. snowflake/ml/modeling/linear_model/elastic_net_cv.py +3 -3
  94. snowflake/ml/modeling/linear_model/gamma_regressor.py +3 -3
  95. snowflake/ml/modeling/linear_model/huber_regressor.py +3 -3
  96. snowflake/ml/modeling/linear_model/lars.py +3 -3
  97. snowflake/ml/modeling/linear_model/lars_cv.py +3 -3
  98. snowflake/ml/modeling/linear_model/lasso.py +3 -3
  99. snowflake/ml/modeling/linear_model/lasso_cv.py +3 -3
  100. snowflake/ml/modeling/linear_model/lasso_lars.py +3 -3
  101. snowflake/ml/modeling/linear_model/lasso_lars_cv.py +3 -3
  102. snowflake/ml/modeling/linear_model/lasso_lars_ic.py +3 -3
  103. snowflake/ml/modeling/linear_model/linear_regression.py +3 -3
  104. snowflake/ml/modeling/linear_model/logistic_regression.py +3 -3
  105. snowflake/ml/modeling/linear_model/logistic_regression_cv.py +3 -3
  106. snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +3 -3
  107. snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +3 -3
  108. snowflake/ml/modeling/linear_model/multi_task_lasso.py +3 -3
  109. snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +3 -3
  110. snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +3 -3
  111. snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +3 -3
  112. snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +3 -3
  113. snowflake/ml/modeling/linear_model/perceptron.py +3 -3
  114. snowflake/ml/modeling/linear_model/poisson_regressor.py +3 -3
  115. snowflake/ml/modeling/linear_model/ransac_regressor.py +3 -3
  116. snowflake/ml/modeling/linear_model/ridge.py +3 -3
  117. snowflake/ml/modeling/linear_model/ridge_classifier.py +3 -3
  118. snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +3 -3
  119. snowflake/ml/modeling/linear_model/ridge_cv.py +3 -3
  120. snowflake/ml/modeling/linear_model/sgd_classifier.py +3 -3
  121. snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +3 -3
  122. snowflake/ml/modeling/linear_model/sgd_regressor.py +3 -3
  123. snowflake/ml/modeling/linear_model/theil_sen_regressor.py +3 -3
  124. snowflake/ml/modeling/linear_model/tweedie_regressor.py +3 -3
  125. snowflake/ml/modeling/manifold/isomap.py +3 -3
  126. snowflake/ml/modeling/manifold/mds.py +3 -3
  127. snowflake/ml/modeling/manifold/spectral_embedding.py +3 -3
  128. snowflake/ml/modeling/manifold/tsne.py +3 -3
  129. snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +3 -3
  130. snowflake/ml/modeling/mixture/gaussian_mixture.py +3 -3
  131. snowflake/ml/modeling/model_selection/grid_search_cv.py +3 -13
  132. snowflake/ml/modeling/model_selection/randomized_search_cv.py +3 -13
  133. snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +3 -3
  134. snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +3 -3
  135. snowflake/ml/modeling/multiclass/output_code_classifier.py +3 -3
  136. snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +3 -3
  137. snowflake/ml/modeling/naive_bayes/categorical_nb.py +3 -3
  138. snowflake/ml/modeling/naive_bayes/complement_nb.py +3 -3
  139. snowflake/ml/modeling/naive_bayes/gaussian_nb.py +3 -3
  140. snowflake/ml/modeling/naive_bayes/multinomial_nb.py +3 -3
  141. snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +3 -3
  142. snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +3 -3
  143. snowflake/ml/modeling/neighbors/kernel_density.py +3 -3
  144. snowflake/ml/modeling/neighbors/local_outlier_factor.py +3 -3
  145. snowflake/ml/modeling/neighbors/nearest_centroid.py +3 -3
  146. snowflake/ml/modeling/neighbors/nearest_neighbors.py +3 -3
  147. snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +3 -3
  148. snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +3 -3
  149. snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +3 -3
  150. snowflake/ml/modeling/neural_network/bernoulli_rbm.py +3 -3
  151. snowflake/ml/modeling/neural_network/mlp_classifier.py +3 -3
  152. snowflake/ml/modeling/neural_network/mlp_regressor.py +3 -3
  153. snowflake/ml/modeling/preprocessing/polynomial_features.py +3 -3
  154. snowflake/ml/modeling/semi_supervised/label_propagation.py +3 -3
  155. snowflake/ml/modeling/semi_supervised/label_spreading.py +3 -3
  156. snowflake/ml/modeling/svm/linear_svc.py +3 -3
  157. snowflake/ml/modeling/svm/linear_svr.py +3 -3
  158. snowflake/ml/modeling/svm/nu_svc.py +3 -3
  159. snowflake/ml/modeling/svm/nu_svr.py +3 -3
  160. snowflake/ml/modeling/svm/svc.py +3 -3
  161. snowflake/ml/modeling/svm/svr.py +3 -3
  162. snowflake/ml/modeling/tree/decision_tree_classifier.py +3 -3
  163. snowflake/ml/modeling/tree/decision_tree_regressor.py +3 -3
  164. snowflake/ml/modeling/tree/extra_tree_classifier.py +3 -3
  165. snowflake/ml/modeling/tree/extra_tree_regressor.py +3 -3
  166. snowflake/ml/modeling/xgboost/xgb_classifier.py +3 -3
  167. snowflake/ml/modeling/xgboost/xgb_regressor.py +3 -3
  168. snowflake/ml/modeling/xgboost/xgbrf_classifier.py +3 -3
  169. snowflake/ml/modeling/xgboost/xgbrf_regressor.py +3 -3
  170. snowflake/ml/version.py +1 -1
  171. {snowflake_ml_python-1.2.1.dist-info → snowflake_ml_python-1.2.2.dist-info}/METADATA +16 -1
  172. {snowflake_ml_python-1.2.1.dist-info → snowflake_ml_python-1.2.2.dist-info}/RECORD +178 -174
  173. /snowflake/ml/modeling/_internal/{pandas_trainer.py → local_implementations/pandas_trainer.py} +0 -0
  174. /snowflake/ml/modeling/_internal/{snowpark_handlers.py → snowpark_implementations/snowpark_handlers.py} +0 -0
  175. /snowflake/ml/modeling/_internal/{snowpark_trainer.py → snowpark_implementations/snowpark_trainer.py} +0 -0
  176. {snowflake_ml_python-1.2.1.dist-info → snowflake_ml_python-1.2.2.dist-info}/LICENSE.txt +0 -0
  177. {snowflake_ml_python-1.2.1.dist-info → snowflake_ml_python-1.2.2.dist-info}/WHEEL +0 -0
  178. {snowflake_ml_python-1.2.1.dist-info → snowflake_ml_python-1.2.2.dist-info}/top_level.txt +0 -0
@@ -294,19 +294,22 @@ def get_matched_package_versions_in_snowflake_conda_channel(
294
294
  url = f"{_SNOWFLAKE_CONDA_CHANNEL_URL}/{conda_os.value}/repodata.json"
295
295
 
296
296
  if req.name not in _SNOWFLAKE_CONDA_PACKAGE_CACHE:
297
- http_client = retryable_http.get_http_client()
298
- parsed_python_version = version.Version(python_version)
299
- python_version_build_str = f"py{parsed_python_version.major}{parsed_python_version.minor}"
300
- repodata = http_client.get(url).json()
301
- assert isinstance(repodata, dict)
302
- packages_info = repodata["packages"]
303
- assert isinstance(packages_info, dict)
304
- version_list = [
305
- version.parse(package_info["version"])
306
- for package_info in packages_info.values()
307
- if package_info["name"] == req.name and python_version_build_str in package_info["build"]
308
- ]
309
- _SNOWFLAKE_CONDA_PACKAGE_CACHE[req.name] = version_list
297
+ try:
298
+ http_client = retryable_http.get_http_client()
299
+ parsed_python_version = version.Version(python_version)
300
+ python_version_build_str = f"py{parsed_python_version.major}{parsed_python_version.minor}"
301
+ repodata = http_client.get(url).json()
302
+ assert isinstance(repodata, dict)
303
+ packages_info = repodata["packages"]
304
+ assert isinstance(packages_info, dict)
305
+ version_list = [
306
+ version.parse(package_info["version"])
307
+ for package_info in packages_info.values()
308
+ if package_info["name"] == req.name and python_version_build_str in package_info["build"]
309
+ ]
310
+ _SNOWFLAKE_CONDA_PACKAGE_CACHE[req.name] = version_list
311
+ except Exception:
312
+ pass
310
313
 
311
314
  matched_versions = list(req.specifier.filter(set(_SNOWFLAKE_CONDA_PACKAGE_CACHE.get(req.name, []))))
312
315
  return matched_versions
@@ -1,4 +1,8 @@
1
- ATTRIBUTE_NOT_SET = "{} is not set."
1
+ ATTRIBUTE_NOT_SET = (
2
+ "{} is not set. To read more about Snowpark ML general API differences, please refer to: "
3
+ "https://docs.snowflake.com/en/developer-guide/snowpark-ml/snowpark-ml-modeling#general-api"
4
+ "-differences."
5
+ )
2
6
  SIZE_MISMATCH = "Size mismatch: {}={}, {}={}."
3
7
  INVALID_MODEL_PARAM = "Invalid parameter {} for model {}. Valid parameters: {}."
4
8
  UNSUPPORTED_MODEL_CONVERSION = "Object doesn't support {}. Please use {}."
@@ -0,0 +1,9 @@
1
+ import os
2
+
3
+ from snowflake.ml._internal import init_utils
4
+
5
+ pkg_dir = os.path.dirname(os.path.abspath(__file__))
6
+ pkg_name = __name__
7
+ exportable_classes = init_utils.fetch_classes_from_modules_in_pkg_dir(pkg_dir=pkg_dir, pkg_name=pkg_name)
8
+ for k, v in exportable_classes.items():
9
+ globals()[k] = v
@@ -0,0 +1,73 @@
1
+ from typing import Dict, List
2
+
3
+ from snowflake.ml._internal.utils.sql_identifier import (
4
+ SqlIdentifier,
5
+ to_sql_identifiers,
6
+ )
7
+
8
+ _ENTITY_NAME_LENGTH_LIMIT = 32
9
+ _FEATURE_VIEW_ENTITY_TAG_DELIMITER = ","
10
+ _ENTITY_JOIN_KEY_DELIMITER = ","
11
+ # join key length limit is the length limit of TAG value
12
+ _ENTITY_JOIN_KEY_LENGTH_LIMIT = 256
13
+ # The maximum number of join keys:
14
+ # https://docs.snowflake.com/en/user-guide/object-tagging#specify-tag-values
15
+ _ENTITY_MAX_NUM_JOIN_KEYS = 300
16
+
17
+
18
+ class Entity:
19
+ """
20
+ Entity encapsulates additional metadata for feature definition.
21
+ Entity is typically used together with FeatureView to define join_keys and associate relevant FeatureViews.
22
+ It can also be used for FeatureView search and lineage tracking.
23
+ """
24
+
25
+ def __init__(self, name: str, join_keys: List[str], desc: str = "") -> None:
26
+ """
27
+ Creates an Entity instance.
28
+
29
+ Args:
30
+ name: name of the Entity.
31
+ join_keys: join keys associated with a FeatureView, used for feature retrieval.
32
+ desc: description of the Entity.
33
+ """
34
+ self._validate(name, join_keys)
35
+
36
+ self.name: SqlIdentifier = SqlIdentifier(name)
37
+ self.join_keys: List[SqlIdentifier] = to_sql_identifiers(join_keys)
38
+ self.desc = desc
39
+
40
+ def _validate(self, name: str, join_keys: List[str]) -> None:
41
+ if len(name) > _ENTITY_NAME_LENGTH_LIMIT:
42
+ raise ValueError(f"Entity name `{name}` exceeds maximum length: {_ENTITY_NAME_LENGTH_LIMIT}")
43
+ if _FEATURE_VIEW_ENTITY_TAG_DELIMITER in name:
44
+ raise ValueError(f"Entity name contains invalid char: `{_FEATURE_VIEW_ENTITY_TAG_DELIMITER}`")
45
+ if len(join_keys) > _ENTITY_MAX_NUM_JOIN_KEYS:
46
+ raise ValueError(
47
+ f"Maximum number of join keys are {_ENTITY_MAX_NUM_JOIN_KEYS}, " "but {len(join_keys)} is provided."
48
+ )
49
+ if len(set(join_keys)) != len(join_keys):
50
+ raise ValueError(f"Duplicate join keys detected in: {join_keys}")
51
+ for k in join_keys:
52
+ # TODO(wezhou) move this logic into SqlIdentifier.
53
+ if _ENTITY_JOIN_KEY_DELIMITER in k:
54
+ raise ValueError(f"Invalid char `{_ENTITY_JOIN_KEY_DELIMITER}` detected in join key {k}")
55
+ if len(k) > _ENTITY_JOIN_KEY_LENGTH_LIMIT:
56
+ raise ValueError(f"Join key: {k} exceeds length limit {_ENTITY_JOIN_KEY_LENGTH_LIMIT}.")
57
+
58
+ def _to_dict(self) -> Dict[str, str]:
59
+ entity_dict = self.__dict__.copy()
60
+ for k, v in entity_dict.items():
61
+ if isinstance(v, SqlIdentifier):
62
+ entity_dict[k] = str(v)
63
+ return entity_dict
64
+
65
+ def __repr__(self) -> str:
66
+ states = (f"{k}={v}" for k, v in vars(self).items())
67
+ return f"{type(self).__name__}({', '.join(states)})"
68
+
69
+ def __eq__(self, other: object) -> bool:
70
+ if not isinstance(other, Entity):
71
+ return False
72
+
73
+ return self.name == other.name and self.desc == other.desc and self.join_keys == other.join_keys