@@ -5,12 +5,14 @@ version = "2025.1"
5
5
description = " Open Data Hub / OpenShift AI Notebook / Workbench images, and tests for the same in Python."
6
6
readme = " README.md"
7
7
package-mode = false
8
- requires-python = " >=3.12,<3.13"
9
-
10
- # https://docs.astral.sh/uv/concepts/projects/dependencies/#managing-dependencies
11
- dependencies = []
8
+ requires-python = " >=3.11,<3.13"
12
9
13
10
[dependency-groups ]
11
+
12
+ # ###########################
13
+ # Python Dependency Groups #
14
+ # ###########################
15
+
14
16
dev = [
15
17
" pre-commit" ,
16
18
" pyright" ,
@@ -32,11 +34,281 @@ dev = [
32
34
" openshift-python-wrapper" ,
33
35
]
34
36
37
+ base = [
38
+
39
+ " wheel~=0.45.1" ,
40
+ " setuptools~=78.1.1; python_version == '3.11'" ,
41
+ " setuptools~=75.8.2; python_version == '3.12'" ,
42
+ ]
43
+
44
+ jupyter-base = [
45
+ " jupyterlab==4.2.7" ,
46
+ " jupyter-server~=2.15.0" ,
47
+ " jupyter-server-proxy~=4.4.0" ,
48
+ " jupyter-server-terminals~=0.5.3" ,
49
+ " jupyterlab-git~=0.50.1" ,
50
+ " nbdime~=4.0.2" ,
51
+ " nbgitpuller~=1.2.2" ,
52
+ ]
53
+
54
+ elyra-base = [
55
+ " odh-elyra==4.2.0" ,
56
+ " jupyterlab-lsp~=5.1.0" ,
57
+ " jupyterlab-widgets~=3.0.13" ,
58
+ " jupyter-resource-usage~=1.1.1" ,
59
+ ]
60
+
61
+ elyra-preferred = [
62
+ " jupyter-bokeh~=4.0.5" ,
63
+ ]
64
+
65
+ elyra-trustyai = [
66
+ " jupyter-bokeh~=3.0.5" ,
67
+ ]
68
+
69
+ db-connectors = [
70
+ " pymongo~=4.11.2" ,
71
+ " psycopg~=3.2.5" ,
72
+ " pyodbc~=5.2.0" ,
73
+ " mysql-connector-python~=9.3.0; python_version == '3.11'" ,
74
+ " mysql-connector-python~=9.2.0; python_version == '3.12'" ,
75
+ ]
76
+
77
+ # onnxconverter-common ~=1.13.0 required for skl2onnx, as upgraded version is not compatible with protobuf
78
+ datascience-base = [
79
+ " boto3~=1.37.8" ,
80
+ " kafka-python-ng~=2.2.3" ,
81
+ " kfp~=2.12.1" ,
82
+ " plotly~=6.0.0" ,
83
+ " scipy~=1.15.2" ,
84
+ " skl2onnx~=1.18.0" ,
85
+ " onnxconverter-common~=1.13.0" ,
86
+ " codeflare-sdk~=0.29.0; python_version == '3.11'" ,
87
+ " codeflare-sdk~=0.28.1; python_version == '3.12'" ,
88
+ " kubeflow-training==1.9.0" ,
89
+ ]
90
+
91
+ datascience-preferred = [
92
+ " matplotlib~=3.10.1" ,
93
+ " numpy~=2.2.3" ,
94
+ " pandas~=2.2.3" ,
95
+ " scikit-learn~=1.6.1" ,
96
+ ]
97
+
98
+ datascience-tensorflow = [
99
+ " matplotlib~=3.10.1" ,
100
+ " numpy~=1.26.4" ,
101
+ " pandas~=2.2.3" ,
102
+ " scikit-learn~=1.6.1" ,
103
+ ]
104
+
105
+ datascience-trustyai = [
106
+ " matplotlib ~=3.6.3" ,
107
+ " numpy ~=1.24.1" ,
108
+ " pandas ~=1.5.3" ,
109
+ " scikit-learn ~=1.2.1"
110
+ ]
111
+
112
+ tensorflowcuda = [
113
+ " tensorflow[and-cuda]~=2.18.0" ,
114
+ " tensorboard~=2.18.0" ,
115
+ " tf2onnx~=1.16.1" ,
116
+ ]
117
+ tensorflowrocm = [
118
+ " tensorflow-rocm~=2.14.0.600" ,
119
+ " tensorboard~=2.14.0" ,
120
+ " tf2onnx~=1.16.1" ,
121
+ ]
122
+ pytorchcuda = [
123
+ " tensorboard~=2.19.0" ,
124
+ " torch==2.6.0" ,
125
+ " torchvision==0.21.0" ,
126
+ ]
127
+ pytorchrocm = [
128
+ " tensorboard~=2.18.0" ,
129
+ " torch==2.6.0" ,
130
+ " torchvision==0.21.0" ,
131
+ " pytorch-triton-rocm~=3.2.0" ,
132
+ ]
133
+ trustyai = [
134
+ " torch==2.6.0" ,
135
+ " transformers~=4.49.0" ,
136
+ " datasets~=3.4.1" ,
137
+ " accelerate~=1.5.2" ,
138
+ " trustyai~=0.6.1" ,
139
+ ]
140
+
141
+ # ########################
142
+ # Workbench Image Groups #
143
+ # ########################
144
+
145
+ jupyter-minimal-image = [
146
+ { include-group = " dev" },
147
+ { include-group = " base" },
148
+ { include-group = " jupyter-base" },
149
+ ]
150
+
151
+ jupyter-datascience-image = [
152
+ { include-group = " dev" },
153
+ { include-group = " base" },
154
+ { include-group = " jupyter-base" },
155
+ { include-group = " elyra-base" },
156
+ { include-group = " elyra-preferred" },
157
+ { include-group = " datascience-base" },
158
+ { include-group = " datascience-preferred" },
159
+ { include-group = " db-connectors" },
160
+ ]
161
+
162
+ jupyter-tensorflow-image = [
163
+ { include-group = " dev" },
164
+ { include-group = " base" },
165
+ { include-group = " jupyter-base" },
166
+ { include-group = " elyra-base" },
167
+ { include-group = " elyra-preferred" },
168
+ { include-group = " datascience-base" },
169
+ { include-group = " datascience-tensorflow" },
170
+ { include-group = " db-connectors" },
171
+ { include-group = " tensorflowcuda" },
172
+ ]
173
+
174
+ jupyter-tensorflow-rocm-image = [
175
+ { include-group = " dev" },
176
+ { include-group = " base" },
177
+ { include-group = " jupyter-base" },
178
+ { include-group = " elyra-base" },
179
+ { include-group = " elyra-preferred" },
180
+ { include-group = " datascience-base" },
181
+ { include-group = " datascience-tensorflow" },
182
+ { include-group = " db-connectors" },
183
+ { include-group = " tensorflowrocm" },
184
+ ]
185
+
186
+ jupyter-pytorch-image = [
187
+ { include-group = " dev" },
188
+ { include-group = " base" },
189
+ { include-group = " jupyter-base" },
190
+ { include-group = " elyra-base" },
191
+ { include-group = " elyra-preferred" },
192
+ { include-group = " datascience-base" },
193
+ { include-group = " datascience-preferred" },
194
+ { include-group = " db-connectors" },
195
+ { include-group = " pytorchcuda" },
196
+ ]
197
+
198
+ jupyter-pytorch-rocm-image = [
199
+ { include-group = " dev" },
200
+ { include-group = " base" },
201
+ { include-group = " jupyter-base" },
202
+ { include-group = " elyra-base" },
203
+ { include-group = " elyra-preferred" },
204
+ { include-group = " datascience-base" },
205
+ { include-group = " datascience-preferred" },
206
+ { include-group = " db-connectors" },
207
+ { include-group = " pytorchrocm" },
208
+ ]
209
+
210
+ jupyter-trustyai-image = [
211
+ { include-group = " dev" },
212
+ { include-group = " base" },
213
+ { include-group = " jupyter-base" },
214
+ { include-group = " elyra-base" },
215
+ { include-group = " elyra-trustyai" },
216
+ { include-group = " datascience-base" },
217
+ { include-group = " datascience-trustyai" },
218
+ { include-group = " db-connectors" },
219
+ { include-group = " trustyai" },
220
+ ]
221
+
222
+ [tool .uv .sources ]
223
+ torch = [
224
+ { index = " pytorch-cuda" , group = " pytorchcuda" },
225
+ { index = " pytorch-cuda" , group = " trustyai" },
226
+ { index = " pytorch-rocm" , group = " pytorchrocm" },
227
+ ]
228
+ torchvision = [
229
+ { index = " pytorch-cuda" , group = " pytorchcuda" },
230
+ { index = " pytorch-rocm" , group = " pytorchrocm" },
231
+ ]
232
+ pytorch-triton-rocm = [
233
+ { index = " pytorch-rocm" },
234
+ ]
235
+
236
+
237
+ [[tool .uv .index ]]
238
+ name = " pytorch-cuda"
239
+ url = " https://download.pytorch.org/whl/cu126"
240
+ explicit = true
241
+
242
+ [[tool .uv .index ]]
243
+ name = " pytorch-rocm"
244
+ url = " https://download.pytorch.org/whl/rocm6.2.4"
245
+ explicit = true
246
+
247
+ [[tool .uv .index ]]
248
+ name = " pypi"
249
+ url = " https://pypi.org/simple/"
250
+ explicit = true
251
+
252
+ [[tool .uv .dependency-metadata ]]
253
+ name = " tf2onnx"
254
+ version = " 1.16.1"
255
+ requires-dist = [" protobuf" ]
256
+
257
+ [[tool .uv .dependency-metadata ]]
258
+ name = " tensorflow-rocm"
259
+ version = " 2.14.0.600"
260
+ requires-dist = [
261
+ " tensorflow-cpu-aws; platform_machine != 'x86_64'" ,
262
+ " tensorflow-estimator" ,
263
+ " tensorflow-io-gcs-filesystem" ,
264
+ ]
265
+
35
266
[tool .uv ]
36
267
package = false
37
- environments = [
38
- " sys_platform == 'darwin'" ,
39
- " sys_platform == 'linux'" ,
268
+ required-environments = [
269
+ " sys_platform == 'linux'"
270
+ ]
271
+
272
+ conflicts = [
273
+ [
274
+ { group = " elyra-preferred" },
275
+ { group = " elyra-trustyai" }
276
+ ],
277
+ [
278
+ { group = " elyra-preferred" },
279
+ { group = " trustyai" }
280
+ ],
281
+ [
282
+ { group = " datascience-preferred" },
283
+ { group = " trustyai" },
284
+ { group = " tensorflowcuda" },
285
+ ],
286
+ [
287
+ { group = " datascience-tensorflow" },
288
+ { group = " trustyai" }
289
+ ],
290
+ [
291
+ { group = " datascience-preferred" },
292
+ { group = " datascience-trustyai" },
293
+ { group = " datascience-tensorflow" },
294
+ ],
295
+ [
296
+ { group = " tensorflowcuda" },
297
+ { group = " tensorflowrocm" },
298
+ { group = " pytorchcuda" },
299
+ { group = " pytorchrocm" },
300
+ { group = " trustyai" },
301
+ ],
302
+ [
303
+ { group = " tensorflowcuda" },
304
+ { group = " tensorflowrocm" },
305
+ { group = " datascience-base" },
306
+ ],
307
+ [
308
+ { group = " tensorflowcuda" },
309
+ { group = " trustyai" },
310
+ { group = " datascience-trustyai" },
311
+ ]
40
312
]
41
313
42
314
# https://github.com/astral-sh/uv/issues/3957#issuecomment-2659350181
@@ -155,4 +427,4 @@ indent-style = "space"
155
427
skip-magic-trailing-comma = false
156
428
157
429
docstring-code-format = true
158
- docstring-code-line-length = " dynamic"
430
+ docstring-code-line-length = " dynamic"
0 commit comments