oracle-ads 2.11.13__py3-none-any.whl → 2.11.15__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 (45) hide show
  1. ads/aqua/common/utils.py +77 -20
  2. ads/aqua/constants.py +30 -17
  3. ads/aqua/evaluation/evaluation.py +118 -107
  4. ads/aqua/extension/evaluation_handler.py +4 -7
  5. ads/aqua/extension/evaluation_ws_msg_handler.py +0 -4
  6. ads/aqua/model/entities.py +6 -8
  7. ads/aqua/modeldeployment/constants.py +0 -16
  8. ads/aqua/modeldeployment/deployment.py +45 -67
  9. ads/common/oci_logging.py +11 -9
  10. ads/opctl/operator/common/operator_config.py +1 -0
  11. ads/opctl/operator/lowcode/anomaly/README.md +3 -3
  12. ads/opctl/operator/lowcode/anomaly/__main__.py +5 -6
  13. ads/opctl/operator/lowcode/anomaly/const.py +8 -0
  14. ads/opctl/operator/lowcode/anomaly/model/anomaly_dataset.py +6 -2
  15. ads/opctl/operator/lowcode/anomaly/model/base_model.py +29 -20
  16. ads/opctl/operator/lowcode/anomaly/model/factory.py +41 -13
  17. ads/opctl/operator/lowcode/anomaly/model/isolationforest.py +79 -0
  18. ads/opctl/operator/lowcode/anomaly/model/oneclasssvm.py +79 -0
  19. ads/opctl/operator/lowcode/anomaly/schema.yaml +12 -2
  20. ads/opctl/operator/lowcode/anomaly/utils.py +16 -13
  21. ads/opctl/operator/lowcode/common/data.py +2 -1
  22. ads/opctl/operator/lowcode/common/transformations.py +37 -9
  23. ads/opctl/operator/lowcode/common/utils.py +32 -10
  24. ads/opctl/operator/lowcode/forecast/model/ml_forecast.py +14 -18
  25. ads/opctl/operator/lowcode/forecast/model_evaluator.py +4 -2
  26. ads/opctl/operator/lowcode/forecast/schema.yaml +9 -0
  27. ads/opctl/operator/lowcode/recommender/MLoperator +16 -0
  28. ads/opctl/operator/lowcode/recommender/README.md +206 -0
  29. ads/opctl/operator/lowcode/recommender/__init__.py +5 -0
  30. ads/opctl/operator/lowcode/recommender/__main__.py +82 -0
  31. ads/opctl/operator/lowcode/recommender/cmd.py +33 -0
  32. ads/opctl/operator/lowcode/recommender/constant.py +25 -0
  33. ads/opctl/operator/lowcode/recommender/environment.yaml +11 -0
  34. ads/opctl/operator/lowcode/recommender/model/base_model.py +198 -0
  35. ads/opctl/operator/lowcode/recommender/model/factory.py +58 -0
  36. ads/opctl/operator/lowcode/recommender/model/recommender_dataset.py +25 -0
  37. ads/opctl/operator/lowcode/recommender/model/svd.py +88 -0
  38. ads/opctl/operator/lowcode/recommender/operator_config.py +81 -0
  39. ads/opctl/operator/lowcode/recommender/schema.yaml +265 -0
  40. ads/opctl/operator/lowcode/recommender/utils.py +13 -0
  41. {oracle_ads-2.11.13.dist-info → oracle_ads-2.11.15.dist-info}/METADATA +22 -18
  42. {oracle_ads-2.11.13.dist-info → oracle_ads-2.11.15.dist-info}/RECORD +45 -29
  43. {oracle_ads-2.11.13.dist-info → oracle_ads-2.11.15.dist-info}/LICENSE.txt +0 -0
  44. {oracle_ads-2.11.13.dist-info → oracle_ads-2.11.15.dist-info}/WHEEL +0 -0
  45. {oracle_ads-2.11.13.dist-info → oracle_ads-2.11.15.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*--
3
+ from typing import Tuple, Dict, Any
4
+
5
+ # Copyright (c) 2023, 2024 Oracle and/or its affiliates.
6
+ # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
7
+
8
+ import pandas as pd
9
+ from pandas import DataFrame
10
+
11
+ from .recommender_dataset import RecommenderDatasets
12
+ from ..operator_config import RecommenderOperatorConfig
13
+ from .factory import RecommenderOperatorBaseModel
14
+ from surprise import Dataset, Reader
15
+ from surprise.model_selection import train_test_split
16
+ from surprise import SVD
17
+ from surprise.accuracy import rmse, mae
18
+ import report_creator as rc
19
+ from ..constant import SupportedMetrics
20
+
21
+
22
+ class SVDOperatorModel(RecommenderOperatorBaseModel):
23
+ """Class representing scikit surprise SVD operator model."""
24
+
25
+ def __init__(self, config: RecommenderOperatorConfig, datasets: RecommenderDatasets):
26
+ super().__init__(config, datasets)
27
+ self.interactions = datasets.interactions
28
+ self.users = datasets.users
29
+ self.items = datasets.items
30
+ self.user_id = config.spec.user_column
31
+ self.item_id = config.spec.item_column
32
+ self.interaction_column = config.spec.interaction_column
33
+ self.test_size = 0.2
34
+ self.algo = SVD()
35
+
36
+ def _get_recommendations(self, user_id, n):
37
+ all_item_ids = self.items[self.item_id].unique()
38
+ rated_items = self.interactions[self.interactions[self.user_id] == user_id][self.item_id]
39
+ unrated_items = [item_id for item_id in all_item_ids if item_id not in rated_items.values]
40
+ predictions = [self.algo.predict(user_id, item_id) for item_id in unrated_items]
41
+ predictions.sort(key=lambda x: x.est, reverse=True)
42
+ top_n_recommendations = predictions[:n]
43
+ return [(pred.iid, pred.est) for pred in top_n_recommendations]
44
+
45
+ def _build_model(self) -> Tuple[DataFrame, Dict]:
46
+ min_rating = self.interactions[self.interaction_column].min()
47
+ max_rating = self.interactions[self.interaction_column].max()
48
+ reader = Reader(rating_scale=(min_rating, max_rating))
49
+ data = Dataset.load_from_df(self.interactions[[self.user_id, self.item_id, self.interaction_column]], reader)
50
+ trainset, testset = train_test_split(data, test_size=self.test_size)
51
+ self.algo.fit(trainset)
52
+ predictions = self.algo.test(testset)
53
+
54
+ metric = {}
55
+ metric[SupportedMetrics.RMSE] = rmse(predictions, verbose=True)
56
+ metric[SupportedMetrics.MAE] = mae(predictions, verbose=True)
57
+ all_recommendations = []
58
+ for user_id in self.users[self.user_id]:
59
+ recommendations = self._get_recommendations(user_id, n=self.spec.top_k)
60
+ for item_id, est_rating in recommendations:
61
+ all_recommendations.append({
62
+ self.user_id: user_id,
63
+ self.item_id: item_id,
64
+ self.interaction_column: est_rating
65
+ })
66
+ recommendations_df = pd.DataFrame(all_recommendations)
67
+ return recommendations_df, metric
68
+
69
+ def _generate_report(self):
70
+ model_description = """
71
+ Singular Value Decomposition (SVD) is a matrix factorization technique used in recommendation systems to
72
+ decompose a user-item interaction matrix into three constituent matrices. These matrices capture the
73
+ latent factors that explain the observed interactions.
74
+ """
75
+ new_user_recommendations = self._get_recommendations("__new_user__", self.spec.top_k)
76
+ new_recommendations = []
77
+ for item_id, est_rating in new_user_recommendations:
78
+ new_recommendations.append({
79
+ self.user_id: "__new_user__",
80
+ self.item_id: item_id,
81
+ self.interaction_column: est_rating
82
+ })
83
+ title = rc.Heading("Recommendations for new users", level=2)
84
+ other_sections = [title, rc.DataTable(new_recommendations)]
85
+ return (
86
+ model_description,
87
+ other_sections
88
+ )
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*--
3
+
4
+ # Copyright (c) 2023 Oracle and/or its affiliates.
5
+ # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
6
+
7
+ import os
8
+ from dataclasses import dataclass, field
9
+
10
+ from ads.common.serializer import DataClassSerializable
11
+ from ads.opctl.operator.common.operator_config import OperatorConfig, InputData
12
+ from ads.opctl.operator.common.utils import _load_yaml_from_uri
13
+ from ads.opctl.operator.lowcode.common.utils import find_output_dirname
14
+ from .constant import SupportedModels
15
+
16
+
17
+ @dataclass(repr=True)
18
+ class OutputDirectory(DataClassSerializable):
19
+ """Class representing operator specification output directory details."""
20
+
21
+ url: str = None
22
+ name: str = None
23
+
24
+
25
+ @dataclass(repr=True)
26
+ class RecommenderOperatorSpec(DataClassSerializable):
27
+ """Class representing Recommender operator specification."""
28
+
29
+ user_data: InputData = field(default_factory=InputData)
30
+ item_data: InputData = field(default_factory=InputData)
31
+ interactions_data: InputData = field(default_factory=InputData)
32
+ output_directory: OutputDirectory = field(default_factory=OutputDirectory)
33
+ top_k: int = None
34
+ model_name: str = None
35
+ user_column: str = None
36
+ item_column: str = None
37
+ interaction_column: str = None
38
+ recommendations_filename: str = None
39
+ generate_report: bool = None
40
+ report_filename: str = None
41
+
42
+
43
+ def __post_init__(self):
44
+ """Adjusts the specification details."""
45
+ self.output_directory = self.output_directory or OutputDirectory(url=find_output_dirname(self.output_directory))
46
+ self.model_name = self.model_name or SupportedModels.SVD
47
+ self.recommendations_filename = self.recommendations_filename or "recommendations.csv"
48
+ # For Report Generation. When user doesn't specify defaults to True
49
+ self.generate_report = (
50
+ self.generate_report if self.generate_report is not None else True
51
+ )
52
+ self.report_filename = self.report_filename or "report.html"
53
+
54
+
55
+ @dataclass(repr=True)
56
+ class RecommenderOperatorConfig(OperatorConfig):
57
+ """Class representing Recommender operator config.
58
+
59
+ Attributes
60
+ ----------
61
+ kind: str
62
+ The kind of the resource. For operators it is always - `operator`.
63
+ type: str
64
+ The type of the operator. For Recommender operator it is always - `Recommender`
65
+ version: str
66
+ The version of the operator.
67
+ spec: RecommenderOperatorSpec
68
+ The Recommender operator specification.
69
+ """
70
+
71
+ kind: str = "operator"
72
+ type: str = "Recommender"
73
+ version: str = "v1"
74
+ spec: RecommenderOperatorSpec = field(default_factory=RecommenderOperatorSpec)
75
+
76
+ @classmethod
77
+ def _load_schema(cls) -> str:
78
+ """Loads operator schema."""
79
+ return _load_yaml_from_uri(
80
+ os.path.join(os.path.dirname(os.path.abspath(__file__)), "schema.yaml")
81
+ )
@@ -0,0 +1,265 @@
1
+ kind:
2
+ allowed:
3
+ - operator
4
+ required: true
5
+ type: string
6
+ default: operator
7
+ meta:
8
+ description: "Which service are you trying to use? Common kinds: `operator`, `job`"
9
+
10
+ version:
11
+ allowed:
12
+ - "v1"
13
+ required: true
14
+ type: string
15
+ default: v1
16
+ meta:
17
+ description: "Operators may change yaml file schemas from version to version, as well as implementation details. Double check the version to ensure compatibility."
18
+
19
+ type:
20
+ required: true
21
+ type: string
22
+ default: recommender
23
+ meta:
24
+ description: "Type should always be `recommender` when using a recommender operator"
25
+
26
+
27
+ spec:
28
+ required: true
29
+ type: dict
30
+ schema:
31
+ user_data:
32
+ required: true
33
+ type: dict
34
+ default: {"url": "user_data.csv"}
35
+ meta:
36
+ description: "This should contain user related attribute."
37
+ schema:
38
+ connect_args:
39
+ nullable: true
40
+ required: false
41
+ type: dict
42
+ format:
43
+ allowed:
44
+ - csv
45
+ - json
46
+ - clipboard
47
+ - excel
48
+ - feather
49
+ - sql_table
50
+ - sql_query
51
+ - hdf
52
+ - tsv
53
+ required: false
54
+ type: string
55
+ columns:
56
+ required: false
57
+ type: list
58
+ schema:
59
+ type: string
60
+ filters:
61
+ required: false
62
+ type: list
63
+ schema:
64
+ type: string
65
+ options:
66
+ nullable: true
67
+ required: false
68
+ type: dict
69
+ sql:
70
+ required: false
71
+ type: string
72
+ table_name:
73
+ required: false
74
+ type: string
75
+ url:
76
+ required: false
77
+ type: string
78
+ meta:
79
+ description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
80
+ limit:
81
+ required: false
82
+ type: integer
83
+
84
+ item_data:
85
+ required: true
86
+ type: dict
87
+ default: {"url": "item_data.csv"}
88
+ meta:
89
+ description: "This should contain item related attribute"
90
+ schema:
91
+ connect_args:
92
+ nullable: true
93
+ required: false
94
+ type: dict
95
+ format:
96
+ allowed:
97
+ - csv
98
+ - json
99
+ - clipboard
100
+ - excel
101
+ - feather
102
+ - sql_table
103
+ - sql_query
104
+ - hdf
105
+ - tsv
106
+ required: false
107
+ type: string
108
+ columns:
109
+ required: false
110
+ type: list
111
+ schema:
112
+ type: string
113
+ filters:
114
+ required: false
115
+ type: list
116
+ schema:
117
+ type: string
118
+ options:
119
+ nullable: true
120
+ required: false
121
+ type: dict
122
+ sql:
123
+ required: false
124
+ type: string
125
+ table_name:
126
+ required: false
127
+ type: string
128
+ url:
129
+ required: false
130
+ type: string
131
+ meta:
132
+ description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
133
+ limit:
134
+ required: false
135
+ type: integer
136
+
137
+ interactions_data:
138
+ required: true
139
+ default: {"url": "interactions_data.csv"}
140
+ meta:
141
+ description: "This should include interactions between items and users"
142
+ schema:
143
+ connect_args:
144
+ nullable: true
145
+ required: false
146
+ type: dict
147
+ format:
148
+ allowed:
149
+ - csv
150
+ - json
151
+ - clipboard
152
+ - excel
153
+ - feather
154
+ - sql_table
155
+ - sql_query
156
+ - hdf
157
+ - tsv
158
+ required: false
159
+ type: string
160
+ columns:
161
+ required: false
162
+ type: list
163
+ schema:
164
+ type: string
165
+ filters:
166
+ required: false
167
+ type: list
168
+ schema:
169
+ type: string
170
+ options:
171
+ nullable: true
172
+ required: false
173
+ type: dict
174
+ sql:
175
+ required: false
176
+ type: string
177
+ table_name:
178
+ required: false
179
+ type: string
180
+ url:
181
+ required: false
182
+ type: string
183
+ meta:
184
+ description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
185
+ limit:
186
+ required: false
187
+ type: integer
188
+ type: dict
189
+
190
+ top_k:
191
+ required: true
192
+ type: integer
193
+ default: 1
194
+
195
+ output_directory:
196
+ required: false
197
+ schema:
198
+ connect_args:
199
+ nullable: true
200
+ required: false
201
+ type: dict
202
+ format:
203
+ allowed:
204
+ - csv
205
+ - json
206
+ - clipboard
207
+ - excel
208
+ - feather
209
+ - sql_table
210
+ - sql_query
211
+ - hdf
212
+ - tsv
213
+ required: false
214
+ type: string
215
+ columns:
216
+ required: false
217
+ type: list
218
+ schema:
219
+ type: string
220
+ filters:
221
+ required: false
222
+ type: list
223
+ schema:
224
+ type: string
225
+ options:
226
+ nullable: true
227
+ required: false
228
+ type: dict
229
+ sql:
230
+ required: false
231
+ type: string
232
+ table_name:
233
+ required: false
234
+ type: string
235
+ url:
236
+ required: false
237
+ type: string
238
+ meta:
239
+ description: "The url can be local, or remote. For example: `oci://<bucket>@<namespace>/data.csv`"
240
+ limit:
241
+ required: false
242
+ type: integer
243
+ type: dict
244
+
245
+ report_filename:
246
+ required: false
247
+ type: string
248
+ default: report.html
249
+ meta:
250
+ description: "Placed into output_directory location. Defaults to report.html"
251
+
252
+ user_column:
253
+ type: string
254
+ required: true
255
+ default: "user_id"
256
+
257
+ item_column:
258
+ type: string
259
+ required: true
260
+ default: "item_id"
261
+
262
+ interaction_column:
263
+ type: string
264
+ required: true
265
+ default: "rating"
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*--
3
+
4
+ # Copyright (c) 2023, 2024 Oracle and/or its affiliates.
5
+ # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
6
+
7
+ import os
8
+
9
+
10
+ def default_signer(**kwargs):
11
+ os.environ["EXTRA_USER_AGENT_INFO"] = "Recommender-Operator"
12
+ from ads.common.auth import default_signer
13
+ return default_signer(**kwargs)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: oracle_ads
3
- Version: 2.11.13
3
+ Version: 2.11.15
4
4
  Summary: Oracle Accelerated Data Science SDK
5
5
  Keywords: Oracle Cloud Infrastructure,OCI,Machine Learning,ML,Artificial Intelligence,AI,Data Science,Cloud,Oracle
6
6
  Author: Oracle Data Science
@@ -13,6 +13,7 @@ Classifier: Operating System :: OS Independent
13
13
  Classifier: Programming Language :: Python :: 3.8
14
14
  Classifier: Programming Language :: Python :: 3.9
15
15
  Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
16
17
  Requires-Dist: PyYAML>=6
17
18
  Requires-Dist: asteval>=0.9.25
18
19
  Requires-Dist: cerberus>=1.3.4
@@ -20,8 +21,8 @@ Requires-Dist: cloudpickle>=1.6.0
20
21
  Requires-Dist: fsspec>=0.8.7
21
22
  Requires-Dist: gitpython>=3.1.2
22
23
  Requires-Dist: jinja2>=2.11.2
23
- Requires-Dist: matplotlib>=3.1.3, <=3.8.4
24
- Requires-Dist: numpy>=1.19.2, <2.0.0
24
+ Requires-Dist: matplotlib>=3.1.3,<=3.8.4
25
+ Requires-Dist: numpy>=1.19.2,<2.0.0
25
26
  Requires-Dist: oci>=2.125.3
26
27
  Requires-Dist: ocifs>=1.1.3
27
28
  Requires-Dist: pandas>1.2.1; python_version<'3.9'
@@ -40,7 +41,7 @@ Requires-Dist: jupyter_server ; extra == "aqua"
40
41
  Requires-Dist: hdfs[kerberos] ; extra == "bds"
41
42
  Requires-Dist: ibis-framework[impala] ; extra == "bds"
42
43
  Requires-Dist: sqlalchemy ; extra == "bds"
43
- Requires-Dist: lightgbm<4.0.0 ; extra == "boosted"
44
+ Requires-Dist: lightgbm ; extra == "boosted"
44
45
  Requires-Dist: xgboost ; extra == "boosted"
45
46
  Requires-Dist: datefinder>=0.7.1 ; extra == "data"
46
47
  Requires-Dist: fastavro>=0.24.2 ; extra == "data"
@@ -48,7 +49,7 @@ Requires-Dist: htmllistparse>=0.6.0 ; extra == "data"
48
49
  Requires-Dist: openpyxl>=3.0.7 ; extra == "data"
49
50
  Requires-Dist: oracledb>=1.0 ; extra == "data"
50
51
  Requires-Dist: pandavro>=1.6.0 ; extra == "data"
51
- Requires-Dist: sqlalchemy>=1.4.1, <=1.4.46 ; extra == "data"
52
+ Requires-Dist: sqlalchemy>=1.4.1,<=1.4.46 ; extra == "data"
52
53
  Requires-Dist: oracle-ads[opctl] ; extra == "feature-store-marketplace"
53
54
  Requires-Dist: kubernetes ; extra == "feature-store-marketplace"
54
55
  Requires-Dist: conda-pack ; extra == "forecast"
@@ -73,20 +74,21 @@ Requires-Dist: statsmodels ; extra == "forecast"
73
74
  Requires-Dist: plotly ; extra == "forecast"
74
75
  Requires-Dist: oracledb ; extra == "forecast"
75
76
  Requires-Dist: report-creator==1.0.9 ; extra == "forecast"
76
- Requires-Dist: geopandas ; extra == "geo"
77
+ Requires-Dist: geopandas<1.0.0 ; extra == "geo"
77
78
  Requires-Dist: oracle_ads[viz] ; extra == "geo"
78
79
  Requires-Dist: transformers ; extra == "huggingface"
80
+ Requires-Dist: tf-keras ; extra == "huggingface"
79
81
  Requires-Dist: langchain-community<0.0.32 ; extra == "llm"
80
82
  Requires-Dist: langchain>=0.1.10,<0.1.14 ; extra == "llm"
81
83
  Requires-Dist: evaluate>=0.4.0 ; extra == "llm"
82
84
  Requires-Dist: ipython>=7.23.1, <8.0 ; extra == "notebook"
83
85
  Requires-Dist: ipywidgets~=7.6.3 ; extra == "notebook"
84
- Requires-Dist: lightgbm<4.0.0 ; extra == "onnx"
85
- Requires-Dist: onnx>=1.12.0 ; extra == "onnx"
86
+ Requires-Dist: lightgbm ; extra == "onnx"
87
+ Requires-Dist: onnx>=1.12.0,<=1.15.0 ; extra == "onnx"
86
88
  Requires-Dist: onnxmltools>=1.10.0 ; extra == "onnx"
87
- Requires-Dist: onnxruntime>=1.10.0,<1.16 ; extra == "onnx"
89
+ Requires-Dist: onnxruntime~=1.17.0,!=1.16.0 ; extra == "onnx"
88
90
  Requires-Dist: oracle_ads[viz] ; extra == "onnx"
89
- Requires-Dist: protobuf<=3.20 ; extra == "onnx"
91
+ Requires-Dist: protobuf ; extra == "onnx"
90
92
  Requires-Dist: skl2onnx>=1.10.4 ; extra == "onnx"
91
93
  Requires-Dist: tf2onnx ; extra == "onnx"
92
94
  Requires-Dist: xgboost<=1.7 ; extra == "onnx"
@@ -112,16 +114,16 @@ Requires-Dist: scrubadub_spacy ; extra == "pii"
112
114
  Requires-Dist: spacy-transformers==1.2.5 ; extra == "pii"
113
115
  Requires-Dist: spacy==3.6.1 ; extra == "pii"
114
116
  Requires-Dist: report-creator==1.0.9 ; extra == "pii"
117
+ Requires-Dist: oracle_ads[opctl] ; extra == "recommender"
118
+ Requires-Dist: scikit-surprise ; extra == "recommender"
119
+ Requires-Dist: plotly ; extra == "recommender"
120
+ Requires-Dist: report-creator==1.0.9 ; extra == "recommender"
115
121
  Requires-Dist: pyspark>=3.0.0 ; extra == "spark"
116
122
  Requires-Dist: oracle_ads[viz] ; extra == "tensorflow"
117
- Requires-Dist: tensorflow ; extra == "tensorflow"
118
- Requires-Dist: dask==2023.5.0 ; extra == "testsuite" and ( python_version=='3.8')
119
- Requires-Dist: dask==2023.10.1 ; extra == "testsuite" and ( python_version>='3.9')
123
+ Requires-Dist: tensorflow<=2.15.1 ; extra == "tensorflow"
120
124
  Requires-Dist: arff ; extra == "testsuite"
121
125
  Requires-Dist: category_encoders==2.6.3 ; extra == "testsuite"
122
126
  Requires-Dist: cohere==4.53 ; extra == "testsuite"
123
- Requires-Dist: dask==2023.10.1 ; extra == "testsuite" and ( python_version>='3.9')
124
- Requires-Dist: dask==2023.5.0 ; extra == "testsuite" and ( python_version=='3.8')
125
127
  Requires-Dist: faiss-cpu ; extra == "testsuite"
126
128
  Requires-Dist: fastparquet==2024.2.0 ; extra == "testsuite"
127
129
  Requires-Dist: imbalanced-learn ; extra == "testsuite"
@@ -132,17 +134,18 @@ Requires-Dist: notebook==6.4.12 ; extra == "testsuite"
132
134
  Requires-Dist: opensearch-py ; extra == "testsuite"
133
135
  Requires-Dist: pdfplumber ; extra == "testsuite"
134
136
  Requires-Dist: py4j ; extra == "testsuite"
135
- Requires-Dist: pyarrow ; extra == "testsuite"
137
+ Requires-Dist: pyarrow>=15.0.0 ; extra == "testsuite"
136
138
  Requires-Dist: statsmodels ; extra == "testsuite" and ( python_version=='3.8')
137
139
  Requires-Dist: statsmodels>=0.14.1 ; extra == "testsuite" and ( python_version>='3.9')
138
140
  Requires-Dist: tables ; extra == "testsuite"
141
+ Requires-Dist: tables>3.9.0 ; extra == "testsuite" and ( python_version>='3.9')
139
142
  Requires-Dist: xlrd>=1.2.0 ; extra == "testsuite"
140
- Requires-Dist: spacy ; extra == "text"
143
+ Requires-Dist: spacy>=3.4.2 ; extra == "text"
141
144
  Requires-Dist: wordcloud>=1.8.1 ; extra == "text"
142
145
  Requires-Dist: oracle_ads[viz] ; extra == "torch"
143
146
  Requires-Dist: torch ; extra == "torch"
144
147
  Requires-Dist: torchvision ; extra == "torch"
145
- Requires-Dist: bokeh>=3.0.0, <3.2.0 ; extra == "viz"
148
+ Requires-Dist: bokeh>=3.0.0,<3.2.0 ; extra == "viz"
146
149
  Requires-Dist: folium>=0.12.1 ; extra == "viz"
147
150
  Requires-Dist: graphviz<0.17 ; extra == "viz"
148
151
  Requires-Dist: scipy>=1.5.4 ; extra == "viz"
@@ -164,6 +167,7 @@ Provides-Extra: onnx
164
167
  Provides-Extra: opctl
165
168
  Provides-Extra: optuna
166
169
  Provides-Extra: pii
170
+ Provides-Extra: recommender
167
171
  Provides-Extra: spark
168
172
  Provides-Extra: tensorflow
169
173
  Provides-Extra: testsuite