-
Notifications
You must be signed in to change notification settings - Fork 77
Expand file tree
/
Copy pathruff.toml
More file actions
108 lines (88 loc) · 4.85 KB
/
ruff.toml
File metadata and controls
108 lines (88 loc) · 4.85 KB
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
line-length = 120 # impacts import sorting
lint.extend-select = [
"ALL",
]
lint.ignore = [
"D", # annoying nags about docstrings
"N", # pep naming
"TCH", # type checking rules, mostly just suggests moving imports under TYPE_CHECKING
"S", # bandit (security checks) -- tends to be not very useful, lots of nitpicks
"DTZ", # datetimes checks -- complaining about missing tz and mostly false positives
"FIX", # complains about fixmes/todos -- annoying
"TD", # complains about todo formatting -- too annoying
"ANN", # missing type annotations? seems way to strict though
"EM" , # suggests assigning all exception messages into a variable first... pretty annoying
### too opinionated style checks
"E501", # too long lines
"E731", # assigning lambda instead of using def
"E741", # Ambiguous variable name: `l`
"E742", # Ambiguous class name: `O
"E401", # Multiple imports on one line
"F403", # import *` used; unable to detect undefined names
###
###
"E722", # Do not use bare `except` ## Sometimes it's useful for defensive imports and that sort of thing..
"F811", # Redefinition of unused # this gets in the way of pytest fixtures (e.g. in cachew)
## might be nice .. but later and I don't wanna make it strict
"E402", # Module level import not at top of file
### these are just nitpicky, we usually know better
"PLR0911", # too many return statements
"PLR0912", # too many branches
"PLR0913", # too many function arguments
"PLR0915", # too many statements
"PLR1714", # consider merging multiple comparisons
"PLR2044", # line with empty comment
"PLR5501", # use elif instead of else if
"PLR2004", # magic value in comparison -- super annoying in tests
###
"PLR0402", # import X.Y as Y -- TODO maybe consider enabling it, but double check
"B009", # calling gettattr with constant attribute -- this is useful to convince mypy
"B010", # same as above, but setattr
"B017", # pytest.raises(Exception)
"B023", # seems to result in false positives?
# complains about useless pass, but has sort of a false positive if the function has a docstring?
# this is common for click entrypoints (e.g. in __main__), so disable
"PIE790",
# a bit too annoying, offers to convert for loops to list comprehension
# , which may heart readability
"PERF401",
# suggests no using exception in for loops
# we do use this technique a lot, plus in 3.11 happy path exception handling is "zero-cost"
"PERF203",
"RET504", # unnecessary assignment before returning -- that can be useful for readability
"RET505", # unnecessary else after return -- can hurt readability
"PLW0603", # global variable update.. we usually know why we are doing this
"PLW2901", # for loop variable overwritten, usually this is intentional
"PT011", # pytest raises is too broad
"COM812", # trailing comma missing -- mostly just being annoying with long multiline strings
"TRY003", # suggests defining exception messages in exception class -- kinda annoying
"TRY201", # raise without specifying exception name -- sometimes hurts readability
"TRY400", # a bit dumb, and results in false positives (see https://github.com/astral-sh/ruff/issues/18070)
"TRY401", # redundant exception in logging.exception call? TODO double check, might result in excessive logging
"TID252", # Prefer absolute imports over relative imports from parent modules
## too annoying
"T20", # just complains about prints and pprints (TODO maybe consider later?)
"Q", # flake quotes, too annoying
"C90", # some complexity checking
"G004", # logging statement uses f string
"ERA001", # commented out code
"SLF001", # private member accessed
"BLE001", # do not catch 'blind' Exception
"INP001", # complains about implicit namespace packages
"SIM102", # if statements collapsing, often hurts readability
"SIM103", # multiple conditions collapsing, often hurts readability
"SIM105", # suggests using contextlib.suppress instad of try/except -- this wouldn't be mypy friendly
"SIM108", # suggests using ternary operation instead of if -- hurts readability
"SIM110", # suggests using any(...) instead of for look/return -- hurts readability
"SIM117", # suggests using single with statement instead of nested -- doesn't work in tests
"RSE102", # complains about missing parens in exceptions
##
"PLC0415", # "imports should be at the top level" -- not realistic
"ARG001", # ugh, kinda annoying when using pytest fixtures
"RUF001", "RUF002", "RUF003", # spams about non-latin characters that we do use for testing
"A005", # we're using promnesia.logging module
"B028", # warnings stacklevel -- will fix later
]
extend-exclude = [
"tests/testdata/**",
]