@@ -26,7 +26,7 @@ classifiers = [
2626 " Typing :: Typed" ,
2727]
2828dynamic = [" version" ]
29- dependencies = [" array-api-compat>=1.1.1 " ]
29+ dependencies = [" array-api-compat>=1.10.0,<2 " ]
3030
3131[project .optional-dependencies ]
3232tests = [
@@ -62,8 +62,8 @@ channels = ["https://prefix.dev/conda-forge"]
6262platforms = [" linux-64" , " osx-arm64" , " win-64" ]
6363
6464[tool .pixi .dependencies ]
65- python = " >=3.10.15 ,<3.14"
66- array-api-compat = " >=1.1.1 "
65+ python = " >=3.10,<3.14"
66+ array-api-compat = " >=1.10.0,<2 "
6767
6868[tool .pixi .pypi-dependencies ]
6969array-api-extra = { path = " ." , editable = true }
@@ -130,6 +130,35 @@ python = "~=3.10.0"
130130[tool .pixi .feature .py313 .dependencies ]
131131python = " ~=3.13.0"
132132
133+ # Backends that can run on CPU-only hosts
134+ [tool .pixi .feature .backends .target .linux-64 .dependencies ]
135+ pytorch = " *"
136+ dask = " *"
137+ sparse = " >=0.15"
138+ jax = " *"
139+
140+ [tool .pixi .feature .backends .target .osx-arm64 .dependencies ]
141+ pytorch = " *"
142+ dask = " *"
143+ sparse = " >=0.15"
144+ jax = " *"
145+
146+ [tool .pixi .feature .backends .target .win-64 .dependencies ]
147+ # pytorch = "*" # Package unavailable on Windows
148+ dask = " *"
149+ sparse = " >=0.15"
150+ # jax = "*" # Package unavailable on Windows
151+
152+ # Backends that require a GPU host and a CUDA driver
153+ [tool .pixi .feature .cuda-backends .target .linux-64 .dependencies ]
154+ cupy = " *"
155+
156+ [tool .pixi .feature .cuda-backends .target .osx-arm64 .dependencies ]
157+ # cupy = "*" # Package unavailable on macOSX
158+
159+ [tool .pixi .feature .cuda-backends .target .win-64 .dependencies ]
160+ cupy = " *"
161+
133162[tool .pixi .environments ]
134163default = { solve-group = " default" }
135164lint = { features = [" lint" ], solve-group = " default" }
@@ -138,7 +167,9 @@ docs = { features = ["docs"], solve-group = "default" }
138167dev = { features = [" lint" , " tests" , " docs" , " dev" ], solve-group = " default" }
139168ci-py310 = [" py310" , " tests" ]
140169ci-py313 = [" py313" , " tests" ]
141-
170+ # CUDA not available on free github actions
171+ ci-backends = [" py310" , " tests" , " backends" ]
172+ tests-backends = [" py310" , " tests" , " backends" , " cuda-backends" ]
142173
143174# pytest
144175
@@ -195,6 +226,8 @@ reportAny = false
195226reportExplicitAny = false
196227# data-apis/array-api-strict#6
197228reportUnknownMemberType = false
229+ # no array-api-compat type stubs
230+ reportUnknownVariableType = false
198231
199232
200233# Ruff
@@ -236,6 +269,7 @@ ignore = [
236269 " PLR09" , # Too many <...>
237270 " PLR2004" , # Magic value used in comparison
238271 " ISC001" , # Conflicts with formatter
272+ " N801" , # Class name should use CapWords convention
239273 " N802" , # Function name should be lowercase
240274 " N806" , # Variable in function should be lowercase
241275]
@@ -271,6 +305,7 @@ checks = [
271305 " ES01" ,
272306]
273307exclude = [ # don't report on objects that match any of these regex
308+ ' .*test_at.*' ,
274309 ' .*test_funcs.*' ,
275310 ' .*test_utils.*' ,
276311 ' .*test_version.*' ,
0 commit comments