Skip to content

Commit 78a60d6

Browse files
committed
Migrated dependencies to a single pyproject.toml file for use with the new Python package manager uv
1 parent e94f5bf commit 78a60d6

File tree

2 files changed

+19099
-678
lines changed

2 files changed

+19099
-678
lines changed

pyproject.toml

Lines changed: 280 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ version = "2025.1"
55
description = "Open Data Hub / OpenShift AI Notebook / Workbench images, and tests for the same in Python."
66
readme = "README.md"
77
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"
129

1310
[dependency-groups]
11+
12+
############################
13+
# Python Dependency Groups #
14+
############################
15+
1416
dev = [
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]
36267
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+
]
40312
]
41313

42314
# https://github.com/astral-sh/uv/issues/3957#issuecomment-2659350181
@@ -155,4 +427,4 @@ indent-style = "space"
155427
skip-magic-trailing-comma = false
156428

157429
docstring-code-format = true
158-
docstring-code-line-length = "dynamic"
430+
docstring-code-line-length = "dynamic"

0 commit comments

Comments
 (0)