@@ -5,12 +5,14 @@ version = "2025.1"
55description = " Open Data Hub / OpenShift AI Notebook / Workbench images, and tests for the same in Python."
66readme = " README.md"
77package-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"
129
1310[dependency-groups ]
11+
12+ # ###########################
13+ # Python Dependency Groups #
14+ # ###########################
15+
1416dev = [
1517 " pre-commit" ,
1618 " pyright" ,
@@ -32,11 +34,281 @@ dev = [
3234 " openshift-python-wrapper" ,
3335]
3436
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+
35266[tool .uv ]
36267package = 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+ ]
40312]
41313
42314# https://github.com/astral-sh/uv/issues/3957#issuecomment-2659350181
@@ -155,4 +427,4 @@ indent-style = "space"
155427skip-magic-trailing-comma = false
156428
157429docstring-code-format = true
158- docstring-code-line-length = " dynamic"
430+ docstring-code-line-length = " dynamic"
0 commit comments