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
|
extend-exclude = [
"numpy/__config__.py",
"numpy/distutils",
"numpy/typing/_char_codes.py",
"spin/cmds.py",
# Submodules.
"doc/source/_static/scipy-mathjax",
"vendored-meson/meson",
"numpy/fft/pocketfft",
"numpy/_core/src/umath/svml",
"numpy/_core/src/npysort/x86-simd-sort",
"numpy/_core/src/highway",
"numpy/_core/src/common/pythoncapi-compat",
]
line-length = 88
[format]
line-ending = "lf"
[lint]
preview = true
extend-select = [
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"ISC", # flake8-implicit-str-concat
"LOG", # flake8-logging
"G", # flake8-logging-format
"PIE", # flake8-pie
"Q", # flake8-quotes
"TID", # flake8-tidy-imports
"FLY", # flynt
"I", # isort
"PD", # pandas-vet
"PERF", # perflint
"E", # pycodestyle/error
"W", # pycodestyle/warning
"PGH", # pygrep-hooks
"PLE", # pylint/error
"UP", # pyupgrade
]
ignore = [
# flake8-bugbear
"B006", # Do not use mutable data structures for argument defaults
"B007", # Loop control variable not used within loop body
"B011", # Do not `assert False` (`python -O` removes these calls), raise `AssertionError()`
"B023", # Function definition does not bind loop variable
"B028", # No explicit `stacklevel` keyword argument found
"B904", # Within an `except` clause distinguish raised exceptions from errors in exception handling
"B905", #`zip()` without an explicit `strict=` parameter
# flake8-comprehensions
"C408", # Unnecessary `dict()` call (rewrite as a literal)
# flake8-implicit-str-concat
"ISC002", # Implicitly concatenated string literals over multiple lines
# flake8-pie
"PIE790", # Unnecessary `pass` statement
# perflint
"PERF401", # Use a list comprehension to create a transformed list
# pycodestyle/error
"E241", # Multiple spaces after comma
"E265", # Block comment should start with `# `
"E266", # Too many leading `#` before block comment
"E302", # TODO: Expected 2 blank lines, found 1
"E402", # Module level import not at top of file
"E712", # Avoid equality comparisons to `True` or `False`
"E721", # TODO: Use `is` and `is not` for type comparisons, or `isinstance()` for isinstance check
"E731", # Do not assign a `lambda` expression, use a `def`
"E741", # Ambiguous variable name
# pyflakes
"F403", # `from ... import *` used; unable to detect undefined names
"F405", # may be undefined, or defined from star imports
"F821", # Undefined name
"F841", # Local variable is assigned to but never used
# pyupgrade
"UP015" , # Unnecessary mode argument
"UP031", # TODO: Use format specifiers instead of percent format
]
[lint.per-file-ignores]
"_tempita.py" = ["B909"]
"bench_*.py" = ["B015", "B018"]
"test*.py" = ["B015", "B018", "E201", "E714"]
"numpy/_core/tests/test_arrayprint.py" = ["E501"]
"numpy/_core/tests/test_cpu_dispatcher.py" = ["E501"]
"numpy/_core/tests/test_cpu_features.py" = ["E501"]
"numpy/_core/tests/test_dtype.py" = ["E501"]
"numpy/_core/tests/test_defchararray.py" = ["E501"]
"numpy/_core/tests/test_einsum.py" = ["E501"]
"numpy/_core/tests/test_multiarray.py" = ["E501"]
"numpy/_core/tests/test_nditer*py" = ["E501"]
"numpy/_core/tests/test_umath.py" = ["E501"]
"numpy/_core/tests/test_numerictypes.py" = ["E501"]
"numpy/_core/tests/test_regression.py" = ["E501"]
"numpy/_core/_add_newdocs.py" = ["E501"]
"numpy/_core/_add_newdocs_scalars.py" = ["E501"]
"numpy/_core/code_generators/generate_umath.py" = ["E501"]
"numpy/lib/tests/test_format.py" = ["E501"]
"numpy/linalg/tests/test_linalg.py" = ["E501"]
"numpy/f2py/*py" = ["E501"]
# for typing related files we follow https://typing.python.org/en/latest/guides/writing_stubs.html#maximum-line-length
"numpy/_typing/_array_like.py" = ["E501"]
"numpy/_typing/_dtype_like.py" = ["E501"]
"numpy*pyi" = ["E501"]
# "useless assignments" aren't so useless when you're testing that they don't make type checkers scream
"numpy/typing/tests/data/*" = ["B015", "B018", "E501"]
# too disruptive to enable all at once
"**/*.py" = ["Q"]
"__init__.py" = ["F401", "F403", "F405"]
"__init__.pyi" = ["F401"]
"numpy/_core/defchararray.py" = ["F403", "F405"]
"numpy/_core/multiarray.py" = ["F405"]
"numpy/_core/numeric.py" = ["F403", "F405"]
"numpy/_core/umath.py" = ["F401", "F403", "F405"]
"numpy/f2py/capi_maps.py" = ["F403", "F405"]
"numpy/f2py/crackfortran.py" = ["F403", "F405"]
"numpy/f2py/f90mod_rules.py" = ["F403", "F405"]
"numpy/ma/core.pyi" = ["F403", "F405"]
"numpy/matlib.py" = ["F405"]
"numpy/matlib.pyi" = ["F811"]
[lint.flake8-builtins]
builtins-allowed-modules = ["random", "typing"]
[lint.flake8-import-conventions.extend-aliases]
"numpy" = "np"
"numpy.typing" = "npt"
[lint.isort]
# these are treated as stdlib within .pyi stubs
extra-standard-library = ["_typeshed", "typing_extensions"]
known-first-party = ["numpy"]
combine-as-imports = true
split-on-trailing-comma = false
|