@@ -28,21 +28,6 @@ classifiers = [
28
28
dynamic = [" version" ]
29
29
dependencies = [" array-api-compat>=1.10.0,<2" ]
30
30
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
-
46
31
[project .urls ]
47
32
Homepage = " https://github.com/data-apis/array-api-extra"
48
33
"Bug Tracker" = " https://github.com/data-apis/array-api-extra/issues"
@@ -168,7 +153,7 @@ cupy = "*"
168
153
169
154
[tool .pixi .environments ]
170
155
default = { solve-group = " default" }
171
- lint = { features = [" lint" ], solve-group = " default" }
156
+ lint = { features = [" lint" , " backends " ], solve-group = " default" }
172
157
tests = { features = [" tests" ], solve-group = " default" }
173
158
docs = { features = [" docs" ], solve-group = " default" }
174
159
dev = { features = [" lint" , " tests" , " docs" , " dev" , " backends" ], solve-group = " default" }
@@ -179,30 +164,24 @@ ci-py313 = ["py313", "tests"]
179
164
ci-backends = [" py310" , " tests" , " backends" ]
180
165
tests-backends = [" py310" , " tests" , " backends" , " cuda-backends" ]
181
166
167
+
182
168
# pytest
183
169
184
170
[tool .pytest .ini_options ]
185
171
minversion = " 6.0"
186
172
addopts = [" -ra" , " --showlocals" , " --strict-markers" , " --strict-config" ]
187
173
xfail_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" ]
193
175
log_cli_level = " INFO"
194
176
testpaths = [" tests" ]
195
177
markers = [" skip_xp_backend(library, *, reason=None): Skip test for a specific backend" ]
196
178
179
+
197
180
# Coverage
198
181
199
182
[tool .coverage ]
200
183
run.source = [" array_api_extra" ]
201
- report.exclude_also = [
202
- ' \.\.\.' ,
203
- ' if typing.TYPE_CHECKING:' ,
204
- ' if TYPE_CHECKING:' ,
205
- ]
184
+ report.exclude_also = [' \.\.\.' ]
206
185
207
186
208
187
# mypy
@@ -213,18 +192,11 @@ python_version = "3.10"
213
192
warn_unused_configs = true
214
193
strict = true
215
194
enable_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
219
196
disallow_any_expr = false
220
197
# false positives with input validation
221
198
disable_error_code = [" redundant-expr" , " unreachable" ]
222
199
223
- [[tool .mypy .overrides ]]
224
- module = " array_api_extra.*"
225
- disallow_untyped_defs = true
226
- disallow_incomplete_defs = true
227
-
228
200
229
201
# pyright
230
202
@@ -234,10 +206,10 @@ pythonVersion = "3.10"
234
206
pythonPlatform = " All"
235
207
typeCheckingMode = " all"
236
208
237
- # data-apis/array-api#589
209
+ # https://github.com/ data-apis/array-api-typing
238
210
reportAny = false
239
211
reportExplicitAny = false
240
- # data-apis/ array-api-strict#6
212
+ # no array-api-strict type stubs
241
213
reportUnknownMemberType = false
242
214
# no array-api-compat type stubs
243
215
reportUnknownVariableType = false
@@ -294,25 +266,17 @@ ignore = [
294
266
" N806" , # Variable in function should be lowercase
295
267
]
296
268
297
- [tool .ruff .lint .per-file-ignores ]
298
- "tests/**" = [" T20" ]
299
-
300
269
301
270
# Pylint
302
271
303
272
[tool .pylint ]
304
273
py-version = " 3.10"
305
- ignore-paths = [" .*/_version.py" ]
306
274
reports.output-format = " colorized"
307
- similarities.ignore-imports = " yes"
308
275
messages_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
316
280
]
317
281
318
282
@@ -321,9 +285,9 @@ messages_control.disable = [
321
285
[tool .numpydoc_validation ]
322
286
checks = [
323
287
" 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
327
291
]
328
292
exclude = [ # don't report on objects that match any of these regex
329
293
' .*test_at.*' ,
0 commit comments