@@ -28,21 +28,6 @@ classifiers = [
2828dynamic = [" version" ]
2929dependencies = [" array-api-compat>=1.10.0,<2" ]
3030
31- [project .optional-dependencies ]
32- tests = [
33- " pytest >=6" ,
34- " pytest-cov >=3" ,
35- " array-api-strict" ,
36- " numpy" ,
37- ]
38- docs = [
39- " sphinx>=7.0" ,
40- " myst_parser>=0.13" ,
41- " sphinx_copybutton" ,
42- " sphinx_autodoc_typehints" ,
43- " furo>=2023.08.17" ,
44- ]
45-
4631[project .urls ]
4732Homepage = " https://github.com/data-apis/array-api-extra"
4833"Bug Tracker" = " https://github.com/data-apis/array-api-extra/issues"
@@ -168,7 +153,7 @@ cupy = "*"
168153
169154[tool .pixi .environments ]
170155default = { solve-group = " default" }
171- lint = { features = [" lint" ], solve-group = " default" }
156+ lint = { features = [" lint" , " backends " ], solve-group = " default" }
172157tests = { features = [" tests" ], solve-group = " default" }
173158docs = { features = [" docs" ], solve-group = " default" }
174159dev = { features = [" lint" , " tests" , " docs" , " dev" , " backends" ], solve-group = " default" }
@@ -179,30 +164,24 @@ ci-py313 = ["py313", "tests"]
179164ci-backends = [" py310" , " tests" , " backends" ]
180165tests-backends = [" py310" , " tests" , " backends" , " cuda-backends" ]
181166
167+
182168# pytest
183169
184170[tool .pytest .ini_options ]
185171minversion = " 6.0"
186172addopts = [" -ra" , " --showlocals" , " --strict-markers" , " --strict-config" ]
187173xfail_strict = true
188- filterwarnings = [
189- " error" ,
190- # TODO: when Python 3.10 is dropped, use `enum.member` in `_delegation.py`
191- " ignore:functools.partial will be a method descriptor:FutureWarning" ,
192- ]
174+ filterwarnings = [" error" ]
193175log_cli_level = " INFO"
194176testpaths = [" tests" ]
195177markers = [" skip_xp_backend(library, *, reason=None): Skip test for a specific backend" ]
196178
179+
197180# Coverage
198181
199182[tool .coverage ]
200183run.source = [" array_api_extra" ]
201- report.exclude_also = [
202- ' \.\.\.' ,
203- ' if typing.TYPE_CHECKING:' ,
204- ' if TYPE_CHECKING:' ,
205- ]
184+ report.exclude_also = [' \.\.\.' ]
206185
207186
208187# mypy
@@ -213,18 +192,11 @@ python_version = "3.10"
213192warn_unused_configs = true
214193strict = true
215194enable_error_code = [" ignore-without-code" , " truthy-bool" ]
216- disallow_untyped_defs = false
217- disallow_incomplete_defs = false
218- # data-apis/array-api#589
195+ # https://github.com/data-apis/array-api-typing
219196disallow_any_expr = false
220197# false positives with input validation
221198disable_error_code = [" redundant-expr" , " unreachable" ]
222199
223- [[tool .mypy .overrides ]]
224- module = " array_api_extra.*"
225- disallow_untyped_defs = true
226- disallow_incomplete_defs = true
227-
228200
229201# pyright
230202
@@ -234,10 +206,10 @@ pythonVersion = "3.10"
234206pythonPlatform = " All"
235207typeCheckingMode = " all"
236208
237- # data-apis/array-api#589
209+ # https://github.com/ data-apis/array-api-typing
238210reportAny = false
239211reportExplicitAny = false
240- # data-apis/ array-api-strict#6
212+ # no array-api-strict type stubs
241213reportUnknownMemberType = false
242214# no array-api-compat type stubs
243215reportUnknownVariableType = false
@@ -294,25 +266,17 @@ ignore = [
294266 " N806" , # Variable in function should be lowercase
295267]
296268
297- [tool .ruff .lint .per-file-ignores ]
298- "tests/**" = [" T20" ]
299-
300269
301270# Pylint
302271
303272[tool .pylint ]
304273py-version = " 3.10"
305- ignore-paths = [" .*/_version.py" ]
306274reports.output-format = " colorized"
307- similarities.ignore-imports = " yes"
308275messages_control.disable = [
309- " design" ,
310- " fixme" ,
311- " line-too-long" ,
312- " missing-module-docstring" ,
313- " missing-function-docstring" ,
314- " too-many-lines" ,
315- " wrong-import-position" ,
276+ " design" , # ignore heavily opinionated design checks
277+ " fixme" , # allow FIXME comments
278+ " line-too-long" , # ruff handles this
279+ " missing-function-docstring" , # numpydoc handles this
316280]
317281
318282
@@ -321,9 +285,9 @@ messages_control.disable = [
321285[tool .numpydoc_validation ]
322286checks = [
323287 " all" , # report on all checks, except the below
324- " EX01" ,
325- " SA01" ,
326- " ES01" ,
288+ " EX01" , # most docstrings do not need an example
289+ " SA01" , # data-apis/array-api-extra#87
290+ " ES01" , # most docstrings do not need an extended summary
327291]
328292exclude = [ # don't report on objects that match any of these regex
329293 ' .*test_at.*' ,
0 commit comments