@@ -11,14 +11,13 @@ authors = [
1111description = " Extra array functions built on top of the array API standard."
1212readme = " README.md"
1313license.file = " LICENSE"
14- requires-python = " >=3.10 "
14+ requires-python = " >=3.11 "
1515classifiers = [
1616 " Intended Audience :: Developers" ,
1717 " Operating System :: OS Independent" ,
1818 " Programming Language :: Python" ,
1919 " Programming Language :: Python :: 3" ,
2020 " Programming Language :: Python :: 3 :: Only" ,
21- " Programming Language :: Python :: 3.10" ,
2221 " Programming Language :: Python :: 3.11" ,
2322 " Programming Language :: Python :: 3.12" ,
2423 " Programming Language :: Python :: 3.13" ,
@@ -135,16 +134,16 @@ ipython = ">=7.33.0"
135134[tool .pixi .feature .dev .tasks ]
136135ipython = { cmd = " ipython" , description = " Launch ipython" }
137136
138- [tool .pixi .feature .py310 .dependencies ]
139- python = " ~=3.10 .0"
137+ [tool .pixi .feature .py311 .dependencies ]
138+ python = " ~=3.11 .0"
140139
141140[tool .pixi .feature .py313 .dependencies ]
142141python = " ~=3.13.0"
143142
144143[tool .pixi .feature .numpy1 .dependencies ]
145144# Oldest NumPy version supported by scikit-learn.
146145# Note that this is older than what SPEC0 recommends.
147- numpy = " =1.22.0 "
146+ numpy = " =1.24.1 "
148147
149148# Backends that can run on CPU-only hosts
150149# Note: JAX and PyTorch will install CPU variants.
@@ -154,8 +153,7 @@ dask-core = ">=2025.12.0" # No distributed, tornado, etc.
154153sparse = " >=0.17.0"
155154
156155[tool .pixi .feature .backends .target .linux-64 .dependencies ]
157- # On CPU Python 3.10, use 0.6.2
158- # On CPU Python >=3.11, use >=0.7.0
156+ # On CPU use >=0.7.0
159157# On GPU, use 0.6.0 (0.6.2 and 0.7.0 both segfault); see jaxlib pin below.
160158jax = " >=0.6.0"
161159
@@ -217,18 +215,16 @@ tests-py313 = { features = ["py313", "tests"], solve-group = "py313" } # alias o
217215# Some backends may pin numpy; use separate solve-group
218216dev = { features = [" py313" , " lint" , " tests" , " docs" , " dev" , " backends" ], solve-group = " backends" }
219217tests-backends = { features = [" py313" , " tests" , " backends" ], solve-group = " backends" }
220- # Note: Python 3.10 has already been dropped by some backends (like JAX),
221- # so this is testing older versions.
222- tests-backends-py310 = { features = [" py310" , " tests" , " backends" ] }
218+ tests-backends-py311 = { features = [" py311" , " tests" , " backends" ] }
223219
224220# CUDA not available on free github actions and on some developers' PCs
225221dev-cuda = { features = [" py313" , " lint" , " tests" , " docs" , " dev" , " backends" , " cuda-backends" ], solve-group = " cuda" }
226222tests-cuda = { features = [" py313" , " tests" , " backends" , " cuda-backends" ], solve-group = " cuda" }
227- tests-cuda-py310 = { features = [" py310 " , " tests" , " backends" , " cuda-backends" ] }
223+ tests-cuda-py311 = { features = [" py311 " , " tests" , " backends" , " cuda-backends" ] }
228224
229225# Ungrouped environments
230- tests-numpy1 = [" py310 " , " tests" , " numpy1" ]
231- tests-py310 = [" py310 " , " tests" ]
226+ tests-numpy1 = [" py311 " , " tests" , " numpy1" ]
227+ tests-py311 = [" py311 " , " tests" ]
232228tests-nogil = [" nogil" , " tests" ]
233229
234230# pytest
@@ -254,7 +250,7 @@ run.source = ["array_api_extra"]
254250
255251[tool .mypy ]
256252files = [" src" , " tests" ]
257- python_version = " 3.10 "
253+ python_version = " 3.11 "
258254warn_unused_configs = true
259255strict = true
260256enable_error_code = [" ignore-without-code" , " truthy-bool" ]
@@ -273,7 +269,7 @@ disable_error_code = ["no-untyped-def"] # test(...) without -> None
273269
274270[tool .basedpyright ]
275271include = [" src" , " tests" ]
276- pythonVersion = " 3.10 "
272+ pythonVersion = " 3.11 "
277273pythonPlatform = " All"
278274typeCheckingMode = " all"
279275
@@ -304,7 +300,7 @@ executionEnvironments = [
304300# Ruff
305301
306302[tool .ruff ]
307- target-version = " py310 "
303+ target-version = " py311 "
308304
309305[tool .ruff .lint ]
310306extend-select = [
@@ -349,7 +345,7 @@ ignore = [
349345# Pylint
350346
351347[tool .pylint ]
352- py-version = " 3.10 "
348+ py-version = " 3.11 "
353349reports.output-format = " colorized"
354350messages_control.disable = [
355351 " design" , # ignore heavily opinionated design checks
0 commit comments