Skip to content

Commit 351f1d8

Browse files
committed
Move to using pixi for environment management
1 parent adf0c28 commit 351f1d8

File tree

7 files changed

+161
-44
lines changed

7 files changed

+161
-44
lines changed

diracx-logic/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ dependencies = [
2323
dynamic = ["version"]
2424

2525
[project.optional-dependencies]
26+
testing = []
2627
types = [
2728
"types-cachetools",
2829
]

environment.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

extensions/gubbins/environment.yml

Lines changed: 0 additions & 10 deletions
This file was deleted.

extensions/gubbins/gubbins-logic/pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ dependencies = [
2222
dynamic = ["version"]
2323

2424
[project.optional-dependencies]
25+
testing = []
2526
types = [
2627
"boto3-stubs",
2728
"types-aiobotocore[essential]",
@@ -30,6 +31,7 @@ types = [
3031
"types-python-dateutil",
3132
"types-PyYAML",
3233
]
34+
3335
[build-system]
3436
requires = ["hatchling", "hatch-vcs"]
3537
build-backend = "hatchling.build"

extensions/gubbins/requirements-dev.txt

Lines changed: 0 additions & 7 deletions
This file was deleted.

pixi.toml

Lines changed: 158 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,168 @@
22
channels = ["conda-forge"]
33
platforms = ["linux-64", "osx-arm64"]
44

5-
[feature.docs.dependencies]
6-
python = ">=3.13.3,<3.14"
5+
[dependencies]
6+
python = ">=3.11.3,<3.12"
7+
# Add some useful development dependencies to most environments
8+
pip = ">=25.1.1"
9+
ipython = ">=9.2.0"
10+
# Ensure these packages are installed using conda instead of pip
11+
python-gfal2 = "*"
12+
m2crypto = "*"
713

8-
[feature.docs.pypi-dependencies]
14+
# DiracX features for providing dependencies
15+
[feature.diracx.pypi-dependencies]
16+
diracx = { path = ".", editable = true, extras = ["testing"] }
17+
[feature.diracx-core.pypi-dependencies]
18+
diracx-core = { path = "diracx-core", editable = true, extras = ["testing"] }
19+
diracx-testing = { path = "diracx-testing", editable = true }
20+
[feature.diracx-cli.pypi-dependencies]
21+
diracx-cli = { path = "diracx-cli", editable = true, extras = ["testing"] }
22+
[feature.diracx-api.pypi-dependencies]
23+
diracx-api = { path = "diracx-api", editable = true, extras = ["testing"] }
24+
[feature.diracx-client.pypi-dependencies]
25+
diracx-client = { path = "diracx-client", editable = true, extras = ["testing"] }
26+
[feature.diracx-db.pypi-dependencies]
27+
diracx-db = { path = "diracx-db", editable = true, extras = ["testing"] }
28+
[feature.diracx-logic.pypi-dependencies]
29+
diracx-logic = { path = "diracx-logic", editable = true, extras = ["testing"] }
30+
[feature.diracx-routers.pypi-dependencies]
31+
diracx-routers = { path = "diracx-routers", editable = true, extras = ["testing"] }
32+
33+
# DiracX features for providing tasks. This is needed to make it so that running
34+
# "pixi run pytest-diracx-core -vvv --pdb" passes the arguments as expected.
35+
# See: https://github.com/prefix-dev/pixi/issues/1519#issuecomment-2651078457
36+
[feature.task-diracx.tasks.pytest-diracx]
37+
cmd = "pytest"
38+
[feature.task-diracx-core.tasks.pytest-diracx-core]
39+
cmd = "cd diracx-core/ && pytest"
40+
[feature.task-diracx-cli.tasks.pytest-diracx-cli]
41+
cmd = "cd diracx-cli/ && pytest"
42+
[feature.task-diracx-api.tasks.pytest-diracx-api]
43+
cmd = "cd diracx-api/ && pytest"
44+
[feature.task-diracx-client.tasks.pytest-diracx-client]
45+
cmd = "cd diracx-client/ && pytest"
46+
[feature.task-diracx-db.tasks.pytest-diracx-db]
47+
cmd = "cd diracx-db/ && pytest"
48+
[feature.task-diracx-logic.tasks.pytest-diracx-logic]
49+
cmd = "cd diracx-logic/ && pytest"
50+
[feature.task-diracx-routers.tasks.pytest-diracx-routers]
51+
cmd = "cd diracx-routers/ && pytest"
52+
53+
# Gubbins features for providing dependencies
54+
[feature.gubbins.pypi-dependencies]
55+
gubbins = { path = "extensions/gubbins", editable = true, extras = ["testing"] }
56+
[feature.gubbins-core.pypi-dependencies]
57+
gubbins-core = { path = "extensions/gubbins/gubbins-core", editable = true, extras = ["testing"] }
58+
gubbins-testing = { path = "extensions/gubbins/gubbins-testing", editable = true }
59+
[feature.gubbins-cli.pypi-dependencies]
60+
gubbins-cli = { path = "extensions/gubbins/gubbins-cli", editable = true, extras = ["testing"] }
61+
[feature.gubbins-api.pypi-dependencies]
62+
gubbins-api = { path = "extensions/gubbins/gubbins-api", editable = true, extras = ["testing"] }
63+
[feature.gubbins-client.pypi-dependencies]
64+
gubbins-client = { path = "extensions/gubbins/gubbins-client", editable = true, extras = ["testing"] }
65+
[feature.gubbins-db.pypi-dependencies]
66+
gubbins-db = { path = "extensions/gubbins/gubbins-db", editable = true, extras = ["testing"] }
67+
[feature.gubbins-logic.pypi-dependencies]
68+
gubbins-logic = { path = "extensions/gubbins/gubbins-logic", editable = true, extras = ["testing"] }
69+
[feature.gubbins-routers.pypi-dependencies]
70+
gubbins-routers = { path = "extensions/gubbins/gubbins-routers", editable = true, extras = ["testing"] }
71+
72+
# Gubbins features for providing tasks. This is needed to make it so that running
73+
# "pixi run pytest-diracx-core -vvv --pdb" passes the arguments as expected.
74+
# See: https://github.com/prefix-dev/pixi/issues/1519#issuecomment-2651078457
75+
[feature.task-gubbins.tasks.pytest-gubbins]
76+
cmd = "pytest"
77+
[feature.task-gubbins-core.tasks.pytest-gubbins-core]
78+
cmd = "cd extensions/gubbins/gubbins-core/ && pytest"
79+
[feature.task-gubbins-cli.tasks.pytest-gubbins-cli]
80+
cmd = "cd extensions/gubbins/gubbins-cli/ && pytest"
81+
[feature.task-gubbins-api.tasks.pytest-gubbins-api]
82+
cmd = "cd extensions/gubbins/gubbins-api/ && pytest"
83+
[feature.task-gubbins-client.tasks.pytest-gubbins-client]
84+
cmd = "cd extensions/gubbins/gubbins-client/ && pytest"
85+
[feature.task-gubbins-db.tasks.pytest-gubbins-db]
86+
cmd = "cd extensions/gubbins/gubbins-db/ && pytest"
87+
[feature.task-gubbins-logic.tasks.pytest-gubbins-logic]
88+
cmd = "cd extensions/gubbins/gubbins-logic/ && pytest"
89+
[feature.task-gubbins-routers.tasks.pytest-gubbins-routers]
90+
cmd = "cd extensions/gubbins/gubbins-routers/ && pytest"
91+
92+
# Features for generating the documentation
93+
[feature.mkdocs.pypi-dependencies]
994
mkdocs-material = "*"
1095
mkdocs-diracx-plugin = { git = "https://github.com/DIRACGrid/mkdocs-diracx-plugin.git", branch = "master"}
96+
[feature.mkdocs.tasks]
97+
mkdocs = "mkdocs serve"
98+
99+
# Features for running pre-commit hooks
100+
[feature.pre-commit.dependencies]
101+
pre-commit = "*"
102+
[feature.pre-commit.tasks]
103+
pre-commit = "pre-commit"
104+
105+
# Features for generating the clients
106+
[feature.client-gen.dependencies]
107+
nodejs = ">=10.9.2"
108+
pre-commit = "*"
109+
[feature.client-gen.tasks.generate-client]
110+
cmd = "python -m diracx.testing.client_generation"
111+
env = { AUTOREST_HOME = "$CONDA_PREFIX/.autorest" }
112+
113+
# Features for running shellcheck
114+
[feature.shellcheck.dependencies]
115+
shellcheck = "*"
116+
[feature.shellcheck.tasks]
117+
shellcheck = "find . -not -wholename './.pixi/*' -name '*.sh' -print -exec shellcheck --exclude=SC1090,SC1091 --external-source '{}' ';'"
11118

12119
[environments]
13-
docs = ["docs"]
120+
# DiracX environments
121+
default = {features = ["task-diracx", "diracx", "diracx-core", "diracx-api", "diracx-cli", "diracx-client", "diracx-db", "diracx-logic", "diracx-routers"], solve-group = "diracx"}
122+
diracx-core = {features = ["task-diracx-core", "diracx-core"], solve-group = "diracx"}
123+
diracx-api = {features = ["task-diracx-api", "diracx-api", "diracx-client", "diracx-core"], solve-group = "diracx"}
124+
diracx-cli = {features = ["task-diracx-cli", "diracx-cli", "diracx-api", "diracx-client", "diracx-core"], solve-group = "diracx"}
125+
diracx-client = {features = ["task-diracx-client", "diracx-client", "diracx-core"], solve-group = "diracx"}
126+
diracx-db = {features = ["task-diracx-db", "diracx-db", "diracx-core"], solve-group = "diracx"}
127+
diracx-logic = {features = ["task-diracx-logic", "diracx-logic", "diracx-db", "diracx-core"], solve-group = "diracx"}
128+
diracx-routers = {features = ["task-diracx-routers", "diracx-routers", "diracx-logic", "diracx-db", "diracx-core"], solve-group = "diracx"}
129+
130+
# Gubbins environments
131+
default-gubbins = {features = ["task-gubbins", "gubbins", "gubbins-core", "gubbins-api", "gubbins-cli", "gubbins-client", "gubbins-db", "gubbins-logic", "gubbins-routers"], solve-group = "gubbins"}
132+
gubbins-core = {features = ["task-gubbins-core", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
133+
gubbins-api = {features = ["task-gubbins-api", "diracx-api", "gubbins-api", "diracx-client", "gubbins-client", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
134+
gubbins-cli = {features = ["task-gubbins-cli", "diracx-cli", "gubbins-cli", "diracx-api", "gubbins-api", "diracx-client", "gubbins-client", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
135+
gubbins-client = {features = ["task-gubbins-client", "diracx-client", "gubbins-client", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
136+
gubbins-db = {features = ["task-gubbins-db", "diracx-db", "gubbins-db", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
137+
gubbins-logic = {features = ["task-gubbins-logic", "diracx-logic", "gubbins-logic", "diracx-db", "gubbins-db", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
138+
gubbins-routers = {features = ["task-gubbins-routers", "diracx-routers", "gubbins-routers", "diracx-logic", "gubbins-logic", "diracx-db", "gubbins-db", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
139+
140+
diracx-generate-client = {features = ["client-gen", "diracx-client", "diracx-routers", "diracx-logic", "diracx-db", "diracx-core"], solve-group = "diracx"}
141+
gubbins-generate-client = {features = ["client-gen", "diracx-client", "gubbins-client", "diracx-routers", "gubbins-routers", "diracx-logic", "gubbins-logic", "diracx-db", "gubbins-db", "diracx-core", "gubbins-core"], solve-group = "gubbins"}
142+
143+
# Tooling environments
144+
mkdocs = ["mkdocs"]
145+
shellcheck = {features = ["shellcheck"], no-default-feature = true}
146+
pre-commit = {features = ["pre-commit"], no-default-feature = true}
14147

15-
[tasks]
16-
docs = { cmd = "mkdocs {{ args }}", args = [{ arg = "args" }]}
148+
# Meta-tasks for running many tests at once
149+
[tasks.pytest-diracx-all-one-by-one]
150+
depends-on = [
151+
{ task = "pytest-diracx-core", environment = "diracx-core" },
152+
{ task = "pytest-diracx-api", environment = "diracx-api" },
153+
{ task = "pytest-diracx-cli", environment = "diracx-cli" },
154+
{ task = "pytest-diracx-client", environment = "diracx-client" },
155+
{ task = "pytest-diracx-db", environment = "diracx-db" },
156+
{ task = "pytest-diracx-logic", environment = "diracx-logic" },
157+
{ task = "pytest-diracx-routers", environment = "diracx-routers" },
158+
]
17159

18-
[tasks.docs-serve]
19-
depends-on = [{ task = "docs", environment = "docs", args = ["serve"]}]
160+
[tasks.pytest-gubbins-all-one-by-one]
161+
depends-on = [
162+
{ task = "pytest-gubbins-core", environment = "gubbins-core" },
163+
{ task = "pytest-gubbins-api", environment = "gubbins-api" },
164+
{ task = "pytest-gubbins-cli", environment = "gubbins-cli" },
165+
{ task = "pytest-gubbins-client", environment = "gubbins-client" },
166+
{ task = "pytest-gubbins-db", environment = "gubbins-db" },
167+
{ task = "pytest-gubbins-logic", environment = "gubbins-logic" },
168+
{ task = "pytest-gubbins-routers", environment = "gubbins-routers" },
169+
]

requirements-dev.txt

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)