-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathpixi.toml
156 lines (130 loc) · 4.6 KB
/
pixi.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
[project]
name = "poprox-recommender"
channels = ["conda-forge", "pytorch", "nvidia"]
platforms = ["linux-64", "osx-arm64", "win-64", "linux-aarch64"]
[tasks]
# core dependencies for the poprox recommender code. Keep this in
# sync with the `pyproject.toml` dependencies (both in recommender
# and concepts), to prioritize using Conda packages
[dependencies]
# core Python and build deps (these aren't in pyproject.toml)
python = "~=3.11.0"
hatchling = "*"
# poprox-recommender dependencies
nltk = "~=3.8"
numpy = "~=1.26"
pytorch = "~=2.0"
smart_open = "~=7.0"
safetensors = ">=0.4,<1"
transformers = "~=4.41"
rich = "~=13.9"
ipyparallel = "~=8.0"
# poprox-concepts dependencies not covered above
pydantic = "~=2.7.1"
# lenskit dependencies from conda
structlog = ">=24.0"
threadpoolctl = "~=3.5"
[pypi-dependencies]
poprox-concepts = { git = "https://github.com/CCRI-POPROX/poprox-concepts.git" }
lenskit = "==2025.0.0a4"
# turn off CUDA on Windows
[target.win.dependencies]
cpuonly = "*"
# production runs in a trimmed-down environment - no MKL, no CUDA
# we also do *not* include the poprox-recommender as a dep, since
# its dependency lock version is always out of date.
[feature.production]
platforms = ["linux-64", "linux-aarch64"]
[feature.production.dependencies]
pip = ">=24"
nomkl = "*"
pytorch-cpu = "*"
[feature.production.pypi-dependencies]
awslambdaric = "~=2.2"
# packaging dependencies for assembling images and packages
[feature.pkg.dependencies]
hatch = "*"
conda-pack = "~=0.8"
# dependencies for working with serverless
[feature.serverless.dependencies]
nodejs = "~=22.1"
[feature.serverless.tasks]
install-serverless = "npm ci"
start-serverless = { cmd = "npx serverless offline start --reloadHandler", depends-on = ["install-serverless"] }
# general development dependencies
[feature.dev.dependencies]
hatch = "*"
ipython = ">=8"
notebook = ">=7.2"
jupytext = ">=1.16"
pyarrow-stubs = ">=17.11,<18"
dprint = ">=0.47"
# dependencies for project meta-work (e.g. updating project files from templates)
[feature.meta.dependencies]
copier = "~=9.0"
[feature.meta.tasks]
update-template = "copier update"
# dependencies for working with the data files and querying servers,
# but *not* running any recommender code
[feature.data.dependencies]
dvc = "~=3.51"
dvc-s3 = "*"
# keep below dependencies synchronized with 'eval' extra deps in pyproject.toml
docopt = ">=0.6"
pandas = "~=2.0"
matplotlib = "~=3.6"
seaborn = "~=0.13.2"
plotnine = "~=0.14.1"
jupytext = ">=1.16"
scipy = "~=1.14.1"
pylatex = "~=1.4.2"
# Linux-only so long as we keep Windows usable with pixi.toml
# TODO: move to normal dependencies when we drop Windows
[feature.data.target.linux.dependencies]
jq = "*"
# dependencies for running the evaluation code
[feature.eval.dependencies]
# keep below dependencies synchronized with 'eval' extra deps in pyproject.toml
docopt = ">=0.6"
pandas = "~=2.0"
[feature.eval.pypi-dependencies]
poprox-recommender = { path = ".", editable = true }
# dependencies for tests
[feature.test.dependencies]
requests = ">=2.31,<3"
coverage = ">=6.5"
pytest = ">=8"
pexpect = "~=4.9"
[feature.test.pypi-dependencies]
poprox-recommender = { path = ".", editable = true }
[feature.test.tasks]
test = { cmd = "pytest tests", depends-on = ["install-serverless"] }
test-cov = { cmd = "coverage run -m pytest tests", depends-on = ["install-serverless"] }
# tooling for code validation
[feature.lint.dependencies]
pre-commit = "~=3.7"
ruff = ">=0.4"
pyright = "~=1.1"
# CUDA support
[feature.cuda]
platforms = ["linux-64", "linux-aarch64"]
[feature.cuda.system-requirements]
cuda = "12"
[feature.cuda.dependencies]
pytorch-gpu = "*"
[feature.cuda.target.linux-64.dependencies]
libblas = { build = "*mkl*" }
# define the actual environments from these component features.
# putting everything but cuda in one solve group keeps deps consistent.
[environments]
default = { features = ["data"], solve-group = "main" }
production = { features = ["production"] }
pkg = { features = ["pkg", "data", "serverless"], no-default-feature = true, solve-group = "main" }
test = { features = ["test", "data", "serverless"], solve-group = "main" }
# environment for just getting & processing the data
data = { features = ["data"], no-default-feature = true, solve-group = "main" }
lint = { features = ["lint"], solve-group = "main" }
eval = { features = ["data", "eval"], solve-group = "main" }
eval-cuda = { features = ["data", "eval", "cuda"], solve-group = "cuda" }
dev = { features = ["dev", "meta", "test", "lint", "data", "eval", "serverless"], solve-group = "main" }
dev-cuda = { features = ["dev", "meta", "test", "lint", "data", "eval", "serverless", "cuda"], solve-group = "cuda" }