-
Notifications
You must be signed in to change notification settings - Fork 5
/
pixi.toml
168 lines (143 loc) · 4.32 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
157
158
159
160
161
162
163
164
165
166
167
168
[project]
name = "poprox-recommender"
channels = ["conda-forge", "pytorch", "nvidia"]
platforms = ["linux-64", "osx-arm64", "win-64"]
[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
lenskit = "~=0.14.4"
nltk = "~=3.8"
numpy = "~=1.26"
pytorch = "~=2.0"
smart_open = "~=7.0"
safetensors = ">=0.4,<1"
transformers = "~=4.41"
colorlog = "~=6.8"
enlighten = "~=1.12"
ipyparallel = "~=8.0"
# poprox-concepts dependencies not covered above
pydantic = "~=2.7.1"
[pypi-dependencies]
# git dep on progress-api until non-prerelease is out
progress-api = { git = "https://github.com/lenskit/progress-api" }
poprox-concepts = { git = "https://github.com/CCRI-POPROX/poprox-concepts.git" }
# 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"]
[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"
# 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"
# 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"]
[feature.cuda.system-requirements]
cuda = "12"
[feature.cuda.dependencies]
pytorch-gpu = "*"
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" }