prospector 1.14.0__py3-none-any.whl → 1.15.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- prospector/blender_combinations.yaml +989 -6
- prospector/postfilter.py +12 -2
- prospector/run.py +10 -3
- prospector/suppression.py +52 -16
- prospector/tools/base.py +10 -0
- prospector/tools/mypy/__init__.py +63 -14
- prospector/tools/pylint/__init__.py +8 -0
- prospector/tools/ruff/__init__.py +10 -1
- {prospector-1.14.0.dist-info → prospector-1.15.0.dist-info}/METADATA +1 -1
- {prospector-1.14.0.dist-info → prospector-1.15.0.dist-info}/RECORD +13 -13
- {prospector-1.14.0.dist-info → prospector-1.15.0.dist-info}/LICENSE +0 -0
- {prospector-1.14.0.dist-info → prospector-1.15.0.dist-info}/WHEEL +0 -0
- {prospector-1.14.0.dist-info → prospector-1.15.0.dist-info}/entry_points.txt +0 -0
|
@@ -10,26 +10,34 @@ combinations:
|
|
|
10
10
|
- pylint: unused-import
|
|
11
11
|
- pyflakes: F401
|
|
12
12
|
- frosted: E101
|
|
13
|
+
- ruff: F401
|
|
13
14
|
|
|
14
15
|
- # Syntax Error
|
|
15
16
|
- dodgy: diff
|
|
16
17
|
- pylint: syntax-error
|
|
17
18
|
- pyflakes: F999
|
|
18
19
|
- pep8: E901
|
|
20
|
+
# expected an indented block
|
|
21
|
+
- pycodestyle: E112
|
|
22
|
+
# IndentationError: unindent does not match any outer indentation level
|
|
19
23
|
- pycodestyle: E901
|
|
20
24
|
- mccabe: MC0000
|
|
21
25
|
- frosted: E402
|
|
26
|
+
- ruff: F999
|
|
22
27
|
|
|
23
28
|
- # Undefined local variable
|
|
24
29
|
- pylint: undefined-variable
|
|
25
30
|
- pyflakes: F821
|
|
26
31
|
- frosted: E303
|
|
32
|
+
- ruff: F821
|
|
33
|
+
- mypy: name-defined
|
|
27
34
|
|
|
28
35
|
- # Unused variable
|
|
29
36
|
- pylint: unused-variable
|
|
30
37
|
- vulture: unused-variable
|
|
31
38
|
- pyflakes: F841
|
|
32
39
|
- frosted: E307
|
|
40
|
+
- ruff: F841
|
|
33
41
|
|
|
34
42
|
- # Mixed tabs and spaces
|
|
35
43
|
- pep257: D206
|
|
@@ -37,11 +45,13 @@ combinations:
|
|
|
37
45
|
- pep8: E101
|
|
38
46
|
- pycodestyle: E101
|
|
39
47
|
- pylint: indentation-mixture
|
|
48
|
+
- ruff: D206
|
|
40
49
|
|
|
41
50
|
- # Import from __future__ not first import
|
|
42
51
|
- pylint: misplaced-future
|
|
43
52
|
- pyflakes: F404
|
|
44
53
|
- frosted: E207
|
|
54
|
+
- ruff: F404
|
|
45
55
|
|
|
46
56
|
- # Line too long
|
|
47
57
|
- pep8: E501
|
|
@@ -84,6 +94,7 @@ combinations:
|
|
|
84
94
|
- pep8: E111
|
|
85
95
|
- pycodestyle: E111
|
|
86
96
|
- pylint: bad-indentation
|
|
97
|
+
- ruff: D207
|
|
87
98
|
|
|
88
99
|
- # incorrect indentation
|
|
89
100
|
- pep257: D208
|
|
@@ -91,6 +102,7 @@ combinations:
|
|
|
91
102
|
- pep8: E111
|
|
92
103
|
- pycodestyle: E111
|
|
93
104
|
- pylint: bad-indentation
|
|
105
|
+
- ruff: D208
|
|
94
106
|
|
|
95
107
|
- # comma not followed by a space
|
|
96
108
|
- pep8: E231
|
|
@@ -114,59 +126,75 @@ combinations:
|
|
|
114
126
|
- pylint: undefined-all-variable
|
|
115
127
|
- pyflakes: F822
|
|
116
128
|
- frosted: E304
|
|
129
|
+
- ruff: F822
|
|
117
130
|
|
|
118
131
|
- # duplicate argument in function definition
|
|
119
132
|
- pylint: duplicate-argument-name
|
|
120
133
|
- pyflakes: F831
|
|
121
134
|
- frosted: E206
|
|
135
|
+
- ruff: F831
|
|
122
136
|
|
|
123
137
|
- # redefinition of unused function
|
|
124
138
|
- pyflakes: F811
|
|
125
139
|
- pylint: function-redefined
|
|
140
|
+
- ruff: F811
|
|
126
141
|
|
|
127
142
|
- # f-string is missing placeholders
|
|
128
143
|
- pylint: f-string-without-interpolation
|
|
129
144
|
- pyflakes: F541
|
|
145
|
+
- ruff: F541
|
|
130
146
|
|
|
131
147
|
- # Duplicate key in dictionary
|
|
132
148
|
- pylint: duplicate-key
|
|
133
149
|
- pyflakes: F601
|
|
150
|
+
- ruff: F601
|
|
134
151
|
|
|
135
152
|
- # More than one starred expression in assignment
|
|
136
153
|
- pylint: too-many-star-expressions
|
|
137
154
|
- pyflakes: F622
|
|
155
|
+
- ruff: F622
|
|
138
156
|
|
|
139
157
|
- # Assert called on a tuple
|
|
140
158
|
- pylint: assert-on-tuple
|
|
141
159
|
- pyflakes: F631
|
|
160
|
+
- ruff: F631
|
|
142
161
|
|
|
143
162
|
- # 'break' outside loop
|
|
144
163
|
- pylint: not-in-loop
|
|
145
164
|
- pyflakes: F701
|
|
165
|
+
- ruff: F701
|
|
146
166
|
|
|
147
167
|
- # 'continue' not properly in loop
|
|
148
168
|
- pylint: not-in-loop
|
|
149
169
|
- pyflakes: F702
|
|
170
|
+
- ruff: F702
|
|
150
171
|
|
|
151
172
|
- # 'continue' not supported inside 'finally' clause
|
|
152
173
|
- pylint: continue-in-finally
|
|
174
|
+
- pylint: E0116
|
|
153
175
|
- pyflakes: F703
|
|
176
|
+
- ruff: F703
|
|
177
|
+
- ruff: PLE0116
|
|
154
178
|
|
|
155
179
|
- # Yield outside function
|
|
156
180
|
- pylint: yield-outside-function
|
|
157
181
|
- pyflakes: F704
|
|
182
|
+
- ruff: F704
|
|
158
183
|
|
|
159
184
|
- # Return outside function
|
|
160
185
|
- pylint: return-outside-function
|
|
161
186
|
- pyflakes: F706
|
|
187
|
+
- ruff: F706
|
|
162
188
|
|
|
163
189
|
- # default 'except:' must be last
|
|
164
190
|
- pylint: bad-except-order
|
|
165
191
|
- pyflakes: F707
|
|
192
|
+
- ruff: F707
|
|
166
193
|
|
|
167
194
|
- # NotImplemented raised - should raise NotImplementedError
|
|
168
195
|
- pylint: notimplemented-raised
|
|
169
196
|
- pyflakes: F901
|
|
197
|
+
- ruff: F901
|
|
170
198
|
|
|
171
199
|
- # first argument of a classmethod should be named 'cls'
|
|
172
200
|
- pep8: N804
|
|
@@ -187,11 +215,17 @@ combinations:
|
|
|
187
215
|
- pylint: redefined-outer-name
|
|
188
216
|
- pyflakes: F810
|
|
189
217
|
- frosted: E306
|
|
218
|
+
- ruff: F810
|
|
219
|
+
|
|
220
|
+
- # Redefinition of unused variable
|
|
221
|
+
- pylint: redefined-outer-name
|
|
222
|
+
- pyflakes: F811
|
|
190
223
|
|
|
191
224
|
- # Wildcard import
|
|
192
225
|
- pylint: wildcard-import
|
|
193
226
|
- pyflakes: F403
|
|
194
227
|
- frosted: E103
|
|
228
|
+
- ruff: F403
|
|
195
229
|
|
|
196
230
|
- # Return with argument inside generator
|
|
197
231
|
- pylint: return-arg-in-generator
|
|
@@ -214,6 +248,28 @@ combinations:
|
|
|
214
248
|
- frosted: W101
|
|
215
249
|
- pep8: E722
|
|
216
250
|
- pycodestyle: E722
|
|
251
|
+
- ruff: E722
|
|
252
|
+
# try_except_pass
|
|
253
|
+
- ruff: S110
|
|
254
|
+
- bandit: B110
|
|
255
|
+
|
|
256
|
+
- # No exception type(s) specified
|
|
257
|
+
- pylint: bare-except
|
|
258
|
+
- frosted: W101
|
|
259
|
+
- pep8: E722
|
|
260
|
+
- pycodestyle: E722
|
|
261
|
+
- ruff: E722
|
|
262
|
+
# try_except_continue
|
|
263
|
+
- ruff: S112
|
|
264
|
+
- bandit: B112
|
|
265
|
+
|
|
266
|
+
- # Do not catch blind exception: `Exception`
|
|
267
|
+
- pylint: broad-exception-caught
|
|
268
|
+
- ruff: BLE001
|
|
269
|
+
|
|
270
|
+
- # Create your own exception
|
|
271
|
+
- pylint: broad-exception-raised
|
|
272
|
+
- ruff: TRY002
|
|
217
273
|
|
|
218
274
|
- # Spaces around keyword/parameter equals
|
|
219
275
|
- pep8: E251
|
|
@@ -228,22 +284,27 @@ combinations:
|
|
|
228
284
|
- # redefinition of unused %r from line %r
|
|
229
285
|
- pyflakes: F811
|
|
230
286
|
- frosted: E301
|
|
287
|
+
- ruff: F811
|
|
231
288
|
|
|
232
289
|
- # list comprehension redefines %r from line %r
|
|
233
290
|
- pyflakes: F812
|
|
234
291
|
- frosted: E302
|
|
292
|
+
- ruff: F812
|
|
235
293
|
|
|
236
294
|
- # import %r from line %r shadowed by loop variable
|
|
237
295
|
- pyflakes: F402
|
|
238
296
|
- frosted: E102
|
|
297
|
+
- ruff: F402
|
|
239
298
|
|
|
240
299
|
- # syntax error in doctest
|
|
241
300
|
- pyflakes: FL0007
|
|
242
301
|
- frosted: E401
|
|
302
|
+
- ruff: FL0007
|
|
243
303
|
|
|
244
304
|
- # local variable %r referenced before assignment
|
|
245
305
|
- pyflakes: F823
|
|
246
306
|
- frosted: E305
|
|
307
|
+
- ruff: F823
|
|
247
308
|
|
|
248
309
|
- # pep8-naming incorrectly suggests that the first argument of a metaclass __new__ method should be 'cls'
|
|
249
310
|
- pylint: bad-mcs-classmethod-argument
|
|
@@ -255,28 +316,57 @@ combinations:
|
|
|
255
316
|
- pycodestyle: N801
|
|
256
317
|
- pylint: invalid-name
|
|
257
318
|
|
|
258
|
-
|
|
259
|
-
|
|
319
|
+
# function name should be lowercase
|
|
320
|
+
- - pylint: invalid-name
|
|
321
|
+
- pep8: N802
|
|
322
|
+
- pycodestyle: N802
|
|
323
|
+
|
|
324
|
+
# argument name should be lowercase
|
|
325
|
+
- - pylint: invalid-name
|
|
326
|
+
- pep8: N803
|
|
327
|
+
- pycodestyle: N803
|
|
328
|
+
|
|
329
|
+
# Variable in function should be lowercase
|
|
330
|
+
- - pylint: invalid-name
|
|
331
|
+
- pep8: N806
|
|
332
|
+
- pycodestyle: N806
|
|
333
|
+
|
|
334
|
+
# too complex
|
|
335
|
+
- # Too many branches ({branches} > {max_branches})
|
|
260
336
|
- pylint: too-many-branches
|
|
261
|
-
|
|
337
|
+
- pylint: R0912
|
|
338
|
+
- mccabe: MC0001
|
|
339
|
+
- ruff: PLR0912
|
|
340
|
+
- # Too many statements ({statements} > {max_statements})
|
|
262
341
|
- pylint: too-many-statements
|
|
342
|
+
- pylint: R0915
|
|
343
|
+
- mccabe: MC0001
|
|
344
|
+
- pylint: too-many-statements
|
|
345
|
+
- ruff: PLR0915
|
|
263
346
|
|
|
264
347
|
- # pep257 takes preference over pylint documentation warnings
|
|
265
348
|
- pep257: D100
|
|
266
349
|
- pydocstyle: D100
|
|
267
350
|
- pylint: missing-docstring
|
|
351
|
+
- ruff: D100
|
|
268
352
|
|
|
269
|
-
-
|
|
353
|
+
- # Missing docstring in public class
|
|
354
|
+
- pep257: D101
|
|
270
355
|
- pydocstyle: D101
|
|
271
356
|
- pylint: missing-docstring
|
|
357
|
+
- ruff: D101
|
|
272
358
|
|
|
273
|
-
-
|
|
359
|
+
- # Missing docstring in public method
|
|
360
|
+
- pep257: D102
|
|
274
361
|
- pydocstyle: D102
|
|
275
362
|
- pylint: missing-docstring
|
|
363
|
+
- ruff: D102
|
|
276
364
|
|
|
277
|
-
-
|
|
365
|
+
- # Missing docstring in public function
|
|
366
|
+
- pep257: D103
|
|
278
367
|
- pydocstyle: D103
|
|
279
368
|
- pylint: missing-docstring
|
|
369
|
+
- ruff: D103
|
|
280
370
|
|
|
281
371
|
- - pylint: singleton-comparison
|
|
282
372
|
- pep8: E711
|
|
@@ -285,3 +375,896 @@ combinations:
|
|
|
285
375
|
- - pylint: subprocess-run-check
|
|
286
376
|
- bandit: B603
|
|
287
377
|
- ruff: S603
|
|
378
|
+
- ruff: PLW1510
|
|
379
|
+
|
|
380
|
+
# assert_used
|
|
381
|
+
- - ruff: S101
|
|
382
|
+
- bandit: B101
|
|
383
|
+
|
|
384
|
+
# exec_used
|
|
385
|
+
- - ruff: S102
|
|
386
|
+
- bandit: B102
|
|
387
|
+
|
|
388
|
+
# set_bad_file_permissions
|
|
389
|
+
- - ruff: S103
|
|
390
|
+
- bandit: B103
|
|
391
|
+
|
|
392
|
+
# hardcoded_bind_all_interfaces
|
|
393
|
+
- - ruff: S104
|
|
394
|
+
- bandit: B104
|
|
395
|
+
|
|
396
|
+
# hardcoded_password_string
|
|
397
|
+
- - ruff: S105
|
|
398
|
+
- bandit: B105
|
|
399
|
+
|
|
400
|
+
# hardcoded_password_funcarg
|
|
401
|
+
- - ruff: S106
|
|
402
|
+
- bandit: B106
|
|
403
|
+
|
|
404
|
+
# hardcoded_password_default
|
|
405
|
+
- - ruff: S107
|
|
406
|
+
- bandit: B107
|
|
407
|
+
|
|
408
|
+
# hardcoded_tmp_directory
|
|
409
|
+
- - ruff: S108
|
|
410
|
+
- bandit: B108
|
|
411
|
+
|
|
412
|
+
# request_without_timeout
|
|
413
|
+
- - pylint: missing-timeout
|
|
414
|
+
- ruff: S113
|
|
415
|
+
- bandit: B113
|
|
416
|
+
|
|
417
|
+
# flask_debug_true
|
|
418
|
+
- - ruff: S201
|
|
419
|
+
- bandit: B201
|
|
420
|
+
|
|
421
|
+
# tarfile_unsafe_members
|
|
422
|
+
- - ruff: S202
|
|
423
|
+
- bandit: B202
|
|
424
|
+
|
|
425
|
+
# hashlib
|
|
426
|
+
- - ruff: S324
|
|
427
|
+
- bandit: B324
|
|
428
|
+
|
|
429
|
+
# request_with_no_cert_validation
|
|
430
|
+
- - ruff: S501
|
|
431
|
+
- bandit: B501
|
|
432
|
+
|
|
433
|
+
# ssl_with_bad_version
|
|
434
|
+
- - ruff: S502
|
|
435
|
+
- bandit: B502
|
|
436
|
+
|
|
437
|
+
# ssl_with_bad_defaults
|
|
438
|
+
- - ruff: S503
|
|
439
|
+
- bandit: B503
|
|
440
|
+
|
|
441
|
+
# ssl_with_no_version
|
|
442
|
+
- - ruff: S504
|
|
443
|
+
- bandit: B504
|
|
444
|
+
|
|
445
|
+
# weak_cryptographic_key
|
|
446
|
+
- - ruff: S505
|
|
447
|
+
- bandit: B505
|
|
448
|
+
|
|
449
|
+
# unsafe-yaml-load
|
|
450
|
+
- - ruff: S506
|
|
451
|
+
- bandit: B506
|
|
452
|
+
|
|
453
|
+
# ssh_no_host_key_verification
|
|
454
|
+
- - ruff: S507
|
|
455
|
+
- bandit: B507
|
|
456
|
+
|
|
457
|
+
# snmp_insecure_version
|
|
458
|
+
- - ruff: S508
|
|
459
|
+
- bandit: B508
|
|
460
|
+
|
|
461
|
+
# snmp_weak_cryptography
|
|
462
|
+
- - ruff: S509
|
|
463
|
+
- bandit: B509
|
|
464
|
+
|
|
465
|
+
# paramiko-call
|
|
466
|
+
- - ruff: S601
|
|
467
|
+
- bandit: B601
|
|
468
|
+
|
|
469
|
+
# subprocess-popen-with-shell-equals-true
|
|
470
|
+
- - ruff: S602
|
|
471
|
+
- bandit: B602
|
|
472
|
+
|
|
473
|
+
# call-with-shell-equals-true
|
|
474
|
+
- - ruff: S604
|
|
475
|
+
- bandit: B604
|
|
476
|
+
|
|
477
|
+
# start-process-with-a-shell
|
|
478
|
+
- - ruff: S605
|
|
479
|
+
- bandit: B605
|
|
480
|
+
|
|
481
|
+
# start-process-with-no-shell
|
|
482
|
+
- - ruff: S606
|
|
483
|
+
- bandit: B606
|
|
484
|
+
|
|
485
|
+
# start-process-with-partial-path
|
|
486
|
+
- - ruff: S607
|
|
487
|
+
- bandit: B607
|
|
488
|
+
|
|
489
|
+
# hardcoded-sql-expression
|
|
490
|
+
- - ruff: S608
|
|
491
|
+
- bandit: B608
|
|
492
|
+
|
|
493
|
+
# linux-commands-wildcard-injection
|
|
494
|
+
- - ruff: S609
|
|
495
|
+
- bandit: B609
|
|
496
|
+
|
|
497
|
+
# django-extra
|
|
498
|
+
- - ruff: S610
|
|
499
|
+
- bandit: B610
|
|
500
|
+
|
|
501
|
+
# django-raw-sql
|
|
502
|
+
- - ruff: S611
|
|
503
|
+
- bandit: B611
|
|
504
|
+
|
|
505
|
+
# logging-config-insecure-listen
|
|
506
|
+
- - ruff: S612
|
|
507
|
+
- bandit: B612
|
|
508
|
+
|
|
509
|
+
# jinja2_autoescape_false
|
|
510
|
+
- - ruff: S701
|
|
511
|
+
- bandit: B701
|
|
512
|
+
|
|
513
|
+
# mako-templates
|
|
514
|
+
- - ruff: S702
|
|
515
|
+
- bandit: B702
|
|
516
|
+
|
|
517
|
+
# Undefined name
|
|
518
|
+
- - mypy: name-defined
|
|
519
|
+
- ruff: F481
|
|
520
|
+
|
|
521
|
+
# Within an `except` clause, raise exceptions with `raise ... from err` or `raise ... from None` to distinguish them from errors in exception handling
|
|
522
|
+
# See: https://docs.astral.sh/ruff/rules/raise-without-from-inside-except
|
|
523
|
+
- - pylint: raise-missing-from
|
|
524
|
+
- ruff: B904
|
|
525
|
+
|
|
526
|
+
# Use of possibly insecure function - consider using safer ast.literal_eval
|
|
527
|
+
# See: https://docs.astral.sh/ruff/rules/suspicious-eval-usage
|
|
528
|
+
- - pylint: eval-used
|
|
529
|
+
- bandit: B307
|
|
530
|
+
- ruff: S307
|
|
531
|
+
|
|
532
|
+
- # {kind} name "{param_name}" does not reflect its {variance}; consider renaming it to "{replacement_name}"
|
|
533
|
+
- pylint: type-name-incorrect-variance
|
|
534
|
+
- pylint: C0105
|
|
535
|
+
- ruff: PLC0105
|
|
536
|
+
|
|
537
|
+
- # {kind} cannot be both covariant and contravariant
|
|
538
|
+
- pylint: type-bivariance
|
|
539
|
+
- pylint: C0131
|
|
540
|
+
- ruff: PLC0131
|
|
541
|
+
|
|
542
|
+
- # {kind} name {param_name} does not match assigned variable name {var_name}
|
|
543
|
+
- pylint: type-param-name-mismatch
|
|
544
|
+
- pylint: C0132
|
|
545
|
+
- ruff: PLC0132
|
|
546
|
+
|
|
547
|
+
- # Class __slots__ should be a non-string iterable
|
|
548
|
+
- pylint: single-string-slots
|
|
549
|
+
- pylint: C0205
|
|
550
|
+
- ruff: PLC0205
|
|
551
|
+
|
|
552
|
+
- # Extracting value from dictionary without calling .items()
|
|
553
|
+
- pylint: dict-index-missing-items
|
|
554
|
+
- pylint: C0206
|
|
555
|
+
- ruff: PLC0206
|
|
556
|
+
|
|
557
|
+
- # Use a sequence type instead of a set when iterating over values
|
|
558
|
+
- pylint: iteration-over-set
|
|
559
|
+
- pylint: C0208
|
|
560
|
+
- ruff: PLC0208
|
|
561
|
+
|
|
562
|
+
- # Import alias does not rename original package
|
|
563
|
+
- pylint: useless-import-alias
|
|
564
|
+
- pylint: C0414
|
|
565
|
+
- ruff: PLC0414
|
|
566
|
+
|
|
567
|
+
- # import should be at the top-level of a file
|
|
568
|
+
- pylint: import-outside-top-level
|
|
569
|
+
- pylint: C0415
|
|
570
|
+
- ruff: PLC0415
|
|
571
|
+
|
|
572
|
+
- # len({expression}) used as condition without comparison
|
|
573
|
+
- pylint: len-test
|
|
574
|
+
- pylint: C1802
|
|
575
|
+
- ruff: PLC1802
|
|
576
|
+
|
|
577
|
+
- # {existing} can be simplified to {replacement} as an empty string is falsey
|
|
578
|
+
- pylint: compare-to-empty-string
|
|
579
|
+
- pylint: C1901
|
|
580
|
+
- ruff: PLC1901
|
|
581
|
+
|
|
582
|
+
- # {kind} name {name} contains a non-ASCII character
|
|
583
|
+
- pylint: non-ascii-name
|
|
584
|
+
- pylint: C2401
|
|
585
|
+
- ruff: PLC2401
|
|
586
|
+
|
|
587
|
+
- # Module alias {name} contains a non-ASCII character
|
|
588
|
+
- pylint: non-ascii-import-name
|
|
589
|
+
- pylint: C2403
|
|
590
|
+
- ruff: PLC2403
|
|
591
|
+
|
|
592
|
+
- # Private name import {name} from external module {module}
|
|
593
|
+
- pylint: import-private-name
|
|
594
|
+
- pylint: C2701
|
|
595
|
+
- ruff: PLC2701
|
|
596
|
+
|
|
597
|
+
- # Unnecessary dunder call to {method}. {replacement}.
|
|
598
|
+
- pylint: unnecessary-dunder-call
|
|
599
|
+
- pylint: C2801
|
|
600
|
+
- ruff: PLC2801
|
|
601
|
+
|
|
602
|
+
- # Lambda expression called directly. Execute the expression inline instead.
|
|
603
|
+
- pylint: unnecessary-direct-lambda-call
|
|
604
|
+
- pylint: C3002
|
|
605
|
+
- ruff: PLC3002
|
|
606
|
+
|
|
607
|
+
- # __init__ method is a generator
|
|
608
|
+
- pylint: yield-in-init
|
|
609
|
+
- pylint: E0100
|
|
610
|
+
- ruff: PLE0100
|
|
611
|
+
|
|
612
|
+
- # Explicit return in __init__
|
|
613
|
+
- pylint: return-in-init
|
|
614
|
+
- pylint: E0101
|
|
615
|
+
- ruff: PLE0101
|
|
616
|
+
|
|
617
|
+
- # Name {name} is both nonlocal and global
|
|
618
|
+
- pylint: nonlocal-and-global
|
|
619
|
+
- pylint: E0115
|
|
620
|
+
- ruff: PLE0115
|
|
621
|
+
|
|
622
|
+
- # Nonlocal name {name} found without binding
|
|
623
|
+
- pylint: nonlocal-without-binding
|
|
624
|
+
- pylint: E0117
|
|
625
|
+
- ruff: PLE0117
|
|
626
|
+
|
|
627
|
+
- # Name {name} is used prior to global declaration on {row}
|
|
628
|
+
- pylint: load-before-global-declaration
|
|
629
|
+
- pylint: E0118
|
|
630
|
+
- ruff: PLE0118
|
|
631
|
+
|
|
632
|
+
- # Attribute {name} is not defined in class's __slots__
|
|
633
|
+
- pylint: non-slot-assignment
|
|
634
|
+
- pylint: E0237
|
|
635
|
+
- ruff: PLE0237
|
|
636
|
+
|
|
637
|
+
- # Duplicate base {base} for class {class}
|
|
638
|
+
- pylint: duplicate-bases
|
|
639
|
+
- pylint: E0241
|
|
640
|
+
- ruff: PLE0241
|
|
641
|
+
|
|
642
|
+
- # The special method {} expects {}, {} {} given
|
|
643
|
+
- pylint: unexpected-special-method-signature
|
|
644
|
+
- pylint: E0302
|
|
645
|
+
- ruff: PLE0302
|
|
646
|
+
|
|
647
|
+
- # __len__ does not return a non-negative integer
|
|
648
|
+
- pylint: invalid-length-return-type
|
|
649
|
+
- pylint: E0303
|
|
650
|
+
- ruff: PLE0303
|
|
651
|
+
|
|
652
|
+
- # __bool__ does not return bool
|
|
653
|
+
- pylint: invalid-bool-return-type
|
|
654
|
+
- pylint: E0304
|
|
655
|
+
- ruff: PLE0304
|
|
656
|
+
|
|
657
|
+
- # __index__ does not return an integer
|
|
658
|
+
- pylint: invalid-index-return-type
|
|
659
|
+
- pylint: E0305
|
|
660
|
+
- ruff: PLE0305
|
|
661
|
+
|
|
662
|
+
- # __str__ does not return str
|
|
663
|
+
- pylint: invalid-str-return-type
|
|
664
|
+
- pylint: E0307
|
|
665
|
+
- ruff: PLE0307
|
|
666
|
+
|
|
667
|
+
- # __bytes__ does not return bytes
|
|
668
|
+
- pylint: invalid-bytes-return-type
|
|
669
|
+
- pylint: E0308
|
|
670
|
+
- ruff: PLE0308
|
|
671
|
+
|
|
672
|
+
- # __hash__ does not return an integer
|
|
673
|
+
- pylint: invalid-hash-return-type
|
|
674
|
+
- pylint: E0309
|
|
675
|
+
- ruff: PLE0309
|
|
676
|
+
|
|
677
|
+
- # Invalid object in __all__, must contain only strings
|
|
678
|
+
- pylint: invalid-all-object
|
|
679
|
+
- pylint: E0604
|
|
680
|
+
- ruff: PLE0604
|
|
681
|
+
|
|
682
|
+
- # Invalid format for __all__, must be tuple or list
|
|
683
|
+
- pylint: invalid-all-format
|
|
684
|
+
- pylint: E0605
|
|
685
|
+
- ruff: PLE0605
|
|
686
|
+
|
|
687
|
+
- # Expression is likely to raise IndexError
|
|
688
|
+
- pylint: potential-index-error
|
|
689
|
+
- pylint: E0643
|
|
690
|
+
- ruff: PLE0643
|
|
691
|
+
|
|
692
|
+
- # Bare raise statement is not inside an exception handler
|
|
693
|
+
- pylint: misplaced-bare-raise
|
|
694
|
+
- pylint: E0704
|
|
695
|
+
- ruff: PLE0704
|
|
696
|
+
|
|
697
|
+
- # Repeated keyword argument: {duplicate_keyword}
|
|
698
|
+
- pylint: repeated-keyword-argument
|
|
699
|
+
- pylint: E1132
|
|
700
|
+
- ruff: PLE1132
|
|
701
|
+
|
|
702
|
+
- # Unpacking a dictionary in iteration without calling .items()
|
|
703
|
+
- pylint: dict-iter-missing-items
|
|
704
|
+
- pylint: E1141
|
|
705
|
+
- ruff: PLE1141
|
|
706
|
+
|
|
707
|
+
- # await should be used within an async function
|
|
708
|
+
- pylint: await-outside-async
|
|
709
|
+
- pylint: E1142
|
|
710
|
+
- ruff: PLE1142
|
|
711
|
+
|
|
712
|
+
- # Too many arguments for logging format string
|
|
713
|
+
- pylint: logging-too-many-args
|
|
714
|
+
- pylint: E1205
|
|
715
|
+
- ruff: PLE1205
|
|
716
|
+
|
|
717
|
+
- # Not enough arguments for logging format string
|
|
718
|
+
- pylint: logging-too-few-args
|
|
719
|
+
- pylint: E1206
|
|
720
|
+
- ruff: PLE1206
|
|
721
|
+
|
|
722
|
+
- # Unsupported format character '{format_char}'
|
|
723
|
+
- pylint: bad-string-format-character
|
|
724
|
+
- pylint: E1300
|
|
725
|
+
- ruff: PLE1300
|
|
726
|
+
|
|
727
|
+
- # Format type does not match argument type
|
|
728
|
+
- pylint: bad-string-format-type
|
|
729
|
+
- pylint: E1307
|
|
730
|
+
- ruff: PLE1307
|
|
731
|
+
|
|
732
|
+
- # String {strip} call contains duplicate characters (did you mean {removal}?)
|
|
733
|
+
- pylint: bad-str-strip-call
|
|
734
|
+
- pylint: E1310
|
|
735
|
+
- ruff: PLE1310
|
|
736
|
+
|
|
737
|
+
- # Invalid type for initial os.getenv argument; expected str
|
|
738
|
+
- pylint: invalid-envvar-value
|
|
739
|
+
- pylint: E1507
|
|
740
|
+
- ruff: PLE1507
|
|
741
|
+
|
|
742
|
+
- # @singledispatch decorator should not be used on methods
|
|
743
|
+
- pylint: singledispatch-method
|
|
744
|
+
- pylint: E1519
|
|
745
|
+
- ruff: PLE1519
|
|
746
|
+
|
|
747
|
+
- # @singledispatchmethod decorator should not be used on non-method functions
|
|
748
|
+
- pylint: singledispatchmethod-function
|
|
749
|
+
- pylint: E1520
|
|
750
|
+
- ruff: PLE1520
|
|
751
|
+
|
|
752
|
+
- # yield from statement in async function; use async for instead
|
|
753
|
+
- pylint: yield-from-in-async-function
|
|
754
|
+
- pylint: E1700
|
|
755
|
+
- ruff: PLE1700
|
|
756
|
+
|
|
757
|
+
- # Contains control characters that can permit obfuscated code
|
|
758
|
+
- pylint: bidirectional-unicode
|
|
759
|
+
- pylint: E2502
|
|
760
|
+
- ruff: PLE2502
|
|
761
|
+
|
|
762
|
+
- # Invalid unescaped character backspace, use "\b" instead
|
|
763
|
+
- pylint: invalid-character-backspace
|
|
764
|
+
- pylint: E2510
|
|
765
|
+
- ruff: PLE2510
|
|
766
|
+
|
|
767
|
+
- # Invalid unescaped character SUB, use "\x1a" instead
|
|
768
|
+
- pylint: invalid-character-sub
|
|
769
|
+
- pylint: E2512
|
|
770
|
+
- ruff: PLE2512
|
|
771
|
+
|
|
772
|
+
- # Invalid unescaped character ESC, use "\x1b" instead
|
|
773
|
+
- pylint: invalid-character-esc
|
|
774
|
+
- pylint: E2513
|
|
775
|
+
- ruff: PLE2513
|
|
776
|
+
|
|
777
|
+
- # Invalid unescaped character NULL, use "\x00" instead
|
|
778
|
+
- pylint: invalid-character-nul
|
|
779
|
+
- pylint: E2514
|
|
780
|
+
- ruff: PLE2514
|
|
781
|
+
|
|
782
|
+
- # Invalid unescaped character zero-width-space, use "\u200B" instead
|
|
783
|
+
- pylint: invalid-character-zero-width-space
|
|
784
|
+
- pylint: E2515
|
|
785
|
+
- ruff: PLE2515
|
|
786
|
+
|
|
787
|
+
- # Iterated set {name} is modified within the for loop
|
|
788
|
+
- pylint: modified-iterating-set
|
|
789
|
+
- pylint: E2515
|
|
790
|
+
- ruff: PLE2515
|
|
791
|
+
|
|
792
|
+
- # Name compared with itself, consider replacing {actual}
|
|
793
|
+
- pylint: comparison-with-itself
|
|
794
|
+
- pylint: R0124
|
|
795
|
+
- ruff: PLR0124
|
|
796
|
+
|
|
797
|
+
- # Two constants compared in a comparison, consider replacing {left_constant} {op} {right_constant}
|
|
798
|
+
- pylint: comparison-of-constant
|
|
799
|
+
- pylint: R0133
|
|
800
|
+
- ruff: PLR0133
|
|
801
|
+
|
|
802
|
+
- # Class method defined without decorator
|
|
803
|
+
- pylint: no-classmethod-decorator
|
|
804
|
+
- pylint: R0202
|
|
805
|
+
- ruff: PLR0202
|
|
806
|
+
|
|
807
|
+
- # Static method defined without decorator
|
|
808
|
+
- pylint: no-staticmethod-decorator
|
|
809
|
+
- pylint: R0203
|
|
810
|
+
- ruff: PLR0203
|
|
811
|
+
|
|
812
|
+
- # Cannot have defined parameters for properties
|
|
813
|
+
- pylint: property-with-parameters
|
|
814
|
+
- pylint: R0206
|
|
815
|
+
- ruff: PLR0206
|
|
816
|
+
|
|
817
|
+
- # Use from {module} import {name} in lieu of alias
|
|
818
|
+
- pylint: manual-from-import
|
|
819
|
+
- pylint: R0402
|
|
820
|
+
- ruff: PLR0402
|
|
821
|
+
|
|
822
|
+
- # Too many public methods ({methods} > {max_methods})
|
|
823
|
+
- pylint: too-many-public-methods
|
|
824
|
+
- pylint: R0904
|
|
825
|
+
- ruff: PLR0904
|
|
826
|
+
|
|
827
|
+
- # Too many return statements ({returns} > {max_returns})
|
|
828
|
+
- pylint: too-many-return-statements
|
|
829
|
+
- pylint: R0911
|
|
830
|
+
- ruff: PLR0911
|
|
831
|
+
|
|
832
|
+
- # Too many arguments in function definition ({c_args} > {max_args})
|
|
833
|
+
- pylint: too-many-arguments
|
|
834
|
+
- pylint: R0913
|
|
835
|
+
- ruff: PLR0913
|
|
836
|
+
|
|
837
|
+
- # Too many local variables ({current_amount}/{max_amount})
|
|
838
|
+
- pylint: too-many-locals
|
|
839
|
+
- pylint: R0914
|
|
840
|
+
- ruff: PLR0914
|
|
841
|
+
|
|
842
|
+
- # Too many Boolean expressions ({expressions} > {max_expressions})
|
|
843
|
+
- pylint: too-many-boolean-expressions
|
|
844
|
+
- pylint: R0916
|
|
845
|
+
- ruff: PLR0916
|
|
846
|
+
|
|
847
|
+
- # Too many positional arguments ({c_pos}/{max_pos})
|
|
848
|
+
- pylint: too-many-positional-arguments
|
|
849
|
+
- pylint: R0917
|
|
850
|
+
- ruff: PLR0917
|
|
851
|
+
|
|
852
|
+
- # Merge isinstance calls: {expression}
|
|
853
|
+
- pylint: repeated-isinstance-calls
|
|
854
|
+
- pylint: R1701
|
|
855
|
+
- ruff: PLR1701
|
|
856
|
+
|
|
857
|
+
- # Too many nested blocks ({nested_blocks} > {max_nested_blocks})
|
|
858
|
+
- pylint: too-many-nested-blocks
|
|
859
|
+
- pylint: R1702
|
|
860
|
+
- ruff: PLR1702
|
|
861
|
+
|
|
862
|
+
- # Redefining argument with the local name {name}
|
|
863
|
+
- pylint: redefined-argument-from-local
|
|
864
|
+
- pylint: R1704
|
|
865
|
+
- ruff: PLR1704
|
|
866
|
+
|
|
867
|
+
- # Consider using if-else expression
|
|
868
|
+
- pylint: and-or-ternary
|
|
869
|
+
- pylint: R1706
|
|
870
|
+
- ruff: PLR1706
|
|
871
|
+
|
|
872
|
+
- # Useless return statement at end of function
|
|
873
|
+
- pylint: useless-return
|
|
874
|
+
- pylint: R1711
|
|
875
|
+
- ruff: PLR1711
|
|
876
|
+
|
|
877
|
+
- # Consider merging multiple comparisons: {expression}. Use a set if the elements are hashable.
|
|
878
|
+
- pylint: repeated-equality-comparison
|
|
879
|
+
- pylint: R1714
|
|
880
|
+
- ruff: PLR1714
|
|
881
|
+
|
|
882
|
+
- # Contains chained boolean comparison that can be simplified
|
|
883
|
+
- pylint: boolean-chained-comparison
|
|
884
|
+
- pylint: R1716
|
|
885
|
+
- ruff: PLR1716
|
|
886
|
+
|
|
887
|
+
- # Use sys.exit() instead of {name}
|
|
888
|
+
- pylint: sys-exit-alias
|
|
889
|
+
- pylint: R1722
|
|
890
|
+
- ruff: PLR1722
|
|
891
|
+
|
|
892
|
+
- # Replace if statement with {replacement}
|
|
893
|
+
- pylint: if-stmt-min-max
|
|
894
|
+
- pylint: R1730
|
|
895
|
+
- ruff: PLR1730
|
|
896
|
+
|
|
897
|
+
- # Unnecessary lookup of dictionary value by key
|
|
898
|
+
- pylint: unnecessary-dict-index-lookup
|
|
899
|
+
- pylint: R1733
|
|
900
|
+
- ruff: PLR1733
|
|
901
|
+
|
|
902
|
+
- # List index lookup in enumerate() loop
|
|
903
|
+
- pylint: unnecessary-list-index-lookup
|
|
904
|
+
- pylint: R1736
|
|
905
|
+
- ruff: PLR1736
|
|
906
|
+
|
|
907
|
+
- # Magic value used in comparison, consider replacing {value} with a constant variable
|
|
908
|
+
- pylint: magic-value-comparison
|
|
909
|
+
- pylint: R2004
|
|
910
|
+
- ruff: PLR2004
|
|
911
|
+
|
|
912
|
+
- # Line with empty comment
|
|
913
|
+
- pylint: empty-comment
|
|
914
|
+
- pylint: R2044
|
|
915
|
+
- ruff: PLR2044
|
|
916
|
+
|
|
917
|
+
- # Use elif instead of else then if, to reduce indentation
|
|
918
|
+
- pylint: collapsible-else-if
|
|
919
|
+
- pylint: R5501
|
|
920
|
+
- ruff: PLR5501
|
|
921
|
+
|
|
922
|
+
- # Use {operator} to perform an augmented assignment directly
|
|
923
|
+
- pylint: non-augmented-assignment
|
|
924
|
+
- pylint: R6104
|
|
925
|
+
- ruff: PLR6104
|
|
926
|
+
|
|
927
|
+
- # Use a set literal when testing for membership
|
|
928
|
+
- pylint: literal-membership
|
|
929
|
+
- pylint: R6201
|
|
930
|
+
- ruff: PLR6201
|
|
931
|
+
|
|
932
|
+
- # Method {method_name} could be a function, class method, or static method
|
|
933
|
+
- pylint: no-self-use
|
|
934
|
+
- pylint: R6301
|
|
935
|
+
- ruff: PLR6301
|
|
936
|
+
|
|
937
|
+
- # Lambda may be unnecessary; consider inlining inner function
|
|
938
|
+
- pylint: unnecessary-lambda
|
|
939
|
+
- pylint: W0108
|
|
940
|
+
- ruff: PLW0108
|
|
941
|
+
|
|
942
|
+
- # else clause on loop without a break statement; remove the else and dedent its contents
|
|
943
|
+
- pylint: useless-else-on-loop
|
|
944
|
+
- pylint: W0120
|
|
945
|
+
- ruff: PLW0120
|
|
946
|
+
|
|
947
|
+
- # Self-assignment of variable {name}
|
|
948
|
+
- pylint: self-assigning-variable
|
|
949
|
+
- pylint: W0127
|
|
950
|
+
- ruff: PLW0127
|
|
951
|
+
|
|
952
|
+
- # Redeclared variable {name} in assignment
|
|
953
|
+
- pylint: redeclared-assigned-name
|
|
954
|
+
- pylint: W0128
|
|
955
|
+
- ruff: PLW0128
|
|
956
|
+
|
|
957
|
+
- # Asserting on an empty string literal will never pass
|
|
958
|
+
- pylint: assert-on-string-literal
|
|
959
|
+
- pylint: W0129
|
|
960
|
+
- ruff: PLW0129
|
|
961
|
+
|
|
962
|
+
- # Named expression used without context
|
|
963
|
+
- pylint: named-expr-without-context
|
|
964
|
+
- pylint: W0131
|
|
965
|
+
- ruff: PLW0131
|
|
966
|
+
|
|
967
|
+
- # Missing raise statement on exception
|
|
968
|
+
- pylint: useless-exception-statement
|
|
969
|
+
- pylint: W0133
|
|
970
|
+
- ruff: PLW0133
|
|
971
|
+
|
|
972
|
+
- # Comparing against a NaN value; use math.isnan instead
|
|
973
|
+
- pylint: nan-comparison
|
|
974
|
+
- pylint: W0177
|
|
975
|
+
- ruff: PLW0177
|
|
976
|
+
|
|
977
|
+
- # First argument of a static method should not be named {argument_name}
|
|
978
|
+
- pylint: bad-staticmethod-argument
|
|
979
|
+
- pylint: W0211
|
|
980
|
+
- ruff: PLW0211
|
|
981
|
+
|
|
982
|
+
- # Slot {slot_name} redefined from base class {base}
|
|
983
|
+
- pylint: redefined-slots-in-subclass
|
|
984
|
+
- pylint: W0244
|
|
985
|
+
- ruff: PLW0244
|
|
986
|
+
|
|
987
|
+
- # super call is missing parentheses
|
|
988
|
+
- pylint: super-without-brackets
|
|
989
|
+
- pylint: W0245
|
|
990
|
+
- ruff: PLW0245
|
|
991
|
+
|
|
992
|
+
- # Module {name} imports itself
|
|
993
|
+
- pylint: import-self
|
|
994
|
+
- pylint: W0406
|
|
995
|
+
- ruff: PLW0406
|
|
996
|
+
|
|
997
|
+
- # Using global for {name} but no assignment is done
|
|
998
|
+
- pylint: global-variable-not-assigned
|
|
999
|
+
- pylint: W0602
|
|
1000
|
+
- ruff: PLW0602
|
|
1001
|
+
|
|
1002
|
+
- # Using the global statement to update {name} is discouraged
|
|
1003
|
+
- pylint: global-statement
|
|
1004
|
+
- pylint: W0603
|
|
1005
|
+
- ruff: PLW0603
|
|
1006
|
+
|
|
1007
|
+
- # global at module level is redundant
|
|
1008
|
+
- pylint: global-at-module-level
|
|
1009
|
+
- pylint: W0604
|
|
1010
|
+
- ruff: PLW0604
|
|
1011
|
+
|
|
1012
|
+
- # Reassigned {} variable in {method_type} method
|
|
1013
|
+
- pylint: self-or-cls-assignment
|
|
1014
|
+
- pylint: W0642
|
|
1015
|
+
- ruff: PLW0642
|
|
1016
|
+
|
|
1017
|
+
- # Exception to catch is the result of a binary and operation
|
|
1018
|
+
- pylint: binary-op-exception
|
|
1019
|
+
- pylint: W0711
|
|
1020
|
+
- ruff: PLW0711
|
|
1021
|
+
|
|
1022
|
+
- # {mode} is not a valid mode for open
|
|
1023
|
+
- pylint: bad-open-mode
|
|
1024
|
+
- pylint: W1501
|
|
1025
|
+
- ruff: PLW1501
|
|
1026
|
+
|
|
1027
|
+
- # Shallow copy of os.environ via copy.copy(os.environ)
|
|
1028
|
+
- pylint: shallow-copy-environ
|
|
1029
|
+
- pylint: W1507
|
|
1030
|
+
- ruff: PLW1507
|
|
1031
|
+
|
|
1032
|
+
- # Invalid type for environment variable default; expected str or None
|
|
1033
|
+
- pylint: invalid-envvar-default
|
|
1034
|
+
- pylint: W1508
|
|
1035
|
+
- ruff: PLW1508
|
|
1036
|
+
|
|
1037
|
+
- # preexec_fn argument is unsafe when using threads
|
|
1038
|
+
- pylint: subprocess-popen-preexec-fn
|
|
1039
|
+
- pylint: W1509
|
|
1040
|
+
- ruff: PLW1509
|
|
1041
|
+
|
|
1042
|
+
- # subprocess.run without explicit check argument
|
|
1043
|
+
- pylint: subprocess-run-without-check
|
|
1044
|
+
- pylint: W1510
|
|
1045
|
+
- ruff: PLW1510
|
|
1046
|
+
|
|
1047
|
+
- # {function_name} in text mode without explicit encoding argument
|
|
1048
|
+
- pylint: unspecified-encoding
|
|
1049
|
+
- pylint: W1514
|
|
1050
|
+
- ruff: PLW1514
|
|
1051
|
+
|
|
1052
|
+
- # Object does not implement __hash__ method
|
|
1053
|
+
- pylint: eq-without-hash
|
|
1054
|
+
- pylint: W1641
|
|
1055
|
+
- ruff: PLW1641
|
|
1056
|
+
|
|
1057
|
+
- # Threading lock directly created in with statement has no effect
|
|
1058
|
+
- pylint: useless-with-lock
|
|
1059
|
+
- pylint: W2101
|
|
1060
|
+
- ruff: PLW2101
|
|
1061
|
+
|
|
1062
|
+
- # Outer {outer_kind} variable {name} overwritten by inner {inner_kind} target
|
|
1063
|
+
- pylint: redefined-loop-name
|
|
1064
|
+
- pylint: W2901
|
|
1065
|
+
- ruff: PLW2901
|
|
1066
|
+
|
|
1067
|
+
- # Dunder method {name} has no special meaning in Python 3
|
|
1068
|
+
- pylint: bad-dunder-method-name
|
|
1069
|
+
- pylint: W3201
|
|
1070
|
+
- ruff: PLW3201
|
|
1071
|
+
|
|
1072
|
+
- # Nested {func} calls can be flattened
|
|
1073
|
+
- pylint: nested-min-max
|
|
1074
|
+
- pylint: W3301
|
|
1075
|
+
- ruff: PLW3301
|
|
1076
|
+
|
|
1077
|
+
- # Missing docstring in public package
|
|
1078
|
+
- ruff: D104
|
|
1079
|
+
- pycodestyle: D104
|
|
1080
|
+
- pep257: D104
|
|
1081
|
+
|
|
1082
|
+
- # Missing docstring in magic method
|
|
1083
|
+
- ruff: D105
|
|
1084
|
+
- pycodestyle: D105
|
|
1085
|
+
- pep257: D105
|
|
1086
|
+
|
|
1087
|
+
- # Missing docstring in public nested class
|
|
1088
|
+
- ruff: D106
|
|
1089
|
+
- pycodestyle: D106
|
|
1090
|
+
- pep257: D106
|
|
1091
|
+
|
|
1092
|
+
- # Missing docstring in __init__
|
|
1093
|
+
- ruff: D107
|
|
1094
|
+
- pycodestyle: D107
|
|
1095
|
+
- pep257: D107
|
|
1096
|
+
|
|
1097
|
+
- # One-line docstring should fit on one line
|
|
1098
|
+
- ruff: D200
|
|
1099
|
+
- pycodestyle: D200
|
|
1100
|
+
- pep257: D200
|
|
1101
|
+
|
|
1102
|
+
- # No blank lines allowed before function docstring (found {num_lines})
|
|
1103
|
+
- ruff: D201
|
|
1104
|
+
- pycodestyle: D201
|
|
1105
|
+
- pep257: D201
|
|
1106
|
+
|
|
1107
|
+
- # No blank lines allowed after function docstring (found {num_lines})
|
|
1108
|
+
- ruff: D202
|
|
1109
|
+
- pycodestyle: D202
|
|
1110
|
+
- pep257: D202
|
|
1111
|
+
|
|
1112
|
+
- # 1 blank line required before class docstring
|
|
1113
|
+
- ruff: D203
|
|
1114
|
+
- pycodestyle: D203
|
|
1115
|
+
- pep257: D203
|
|
1116
|
+
|
|
1117
|
+
- # 1 blank line required after class docstring
|
|
1118
|
+
- ruff: D204
|
|
1119
|
+
- pycodestyle: D204
|
|
1120
|
+
- pep257: D204
|
|
1121
|
+
|
|
1122
|
+
- # 1 blank line required between summary line and description
|
|
1123
|
+
- ruff: D205
|
|
1124
|
+
- pycodestyle: D205
|
|
1125
|
+
- pep257: D205
|
|
1126
|
+
|
|
1127
|
+
- # Multi-line docstring closing quotes should be on a separate line
|
|
1128
|
+
- ruff: D209
|
|
1129
|
+
- pycodestyle: D209
|
|
1130
|
+
- pep257: D209
|
|
1131
|
+
|
|
1132
|
+
- # No whitespaces allowed surrounding docstring text
|
|
1133
|
+
- ruff: D210
|
|
1134
|
+
- pycodestyle: D210
|
|
1135
|
+
- pep257: D210
|
|
1136
|
+
|
|
1137
|
+
- # No blank lines allowed before class docstring
|
|
1138
|
+
- ruff: D211
|
|
1139
|
+
- pycodestyle: D211
|
|
1140
|
+
- pep257: D211
|
|
1141
|
+
|
|
1142
|
+
- # Multi-line docstring summary should start at the first line
|
|
1143
|
+
- ruff: D212
|
|
1144
|
+
- pycodestyle: D212
|
|
1145
|
+
- pep257: D212
|
|
1146
|
+
|
|
1147
|
+
- # Multi-line docstring summary should start at the second line
|
|
1148
|
+
- ruff: D213
|
|
1149
|
+
- pycodestyle: D213
|
|
1150
|
+
- pep257: D213
|
|
1151
|
+
|
|
1152
|
+
- # Section is over-indented ("{name}")
|
|
1153
|
+
- ruff: D214
|
|
1154
|
+
- pycodestyle: D214
|
|
1155
|
+
- pep257: D214
|
|
1156
|
+
|
|
1157
|
+
- # Section underline is over-indented ("{name}")
|
|
1158
|
+
- ruff: D215
|
|
1159
|
+
- pycodestyle: D215
|
|
1160
|
+
- pep257: D215
|
|
1161
|
+
|
|
1162
|
+
- # Use triple double quotes """
|
|
1163
|
+
- ruff: D300
|
|
1164
|
+
- pycodestyle: D300
|
|
1165
|
+
- pep257: D300
|
|
1166
|
+
|
|
1167
|
+
- # Use r""" if any backslashes in a docstring
|
|
1168
|
+
- ruff: D301
|
|
1169
|
+
- pycodestyle: D301
|
|
1170
|
+
- pep257: D301
|
|
1171
|
+
|
|
1172
|
+
- # First line should end with a period
|
|
1173
|
+
- ruff: D400
|
|
1174
|
+
- pycodestyle: D400
|
|
1175
|
+
- pep257: D400
|
|
1176
|
+
|
|
1177
|
+
- # First line of docstring should be in imperative mood: "{first_line}"
|
|
1178
|
+
- ruff: D401
|
|
1179
|
+
- pycodestyle: D401
|
|
1180
|
+
- pep257: D401
|
|
1181
|
+
|
|
1182
|
+
- # First line should not be the function's signature
|
|
1183
|
+
- ruff: D402
|
|
1184
|
+
- pycodestyle: D402
|
|
1185
|
+
- pep257: D402
|
|
1186
|
+
|
|
1187
|
+
- # First word of the docstring should be capitalized: {} -> {}
|
|
1188
|
+
- ruff: D403
|
|
1189
|
+
- pycodestyle: D403
|
|
1190
|
+
- pep257: D403
|
|
1191
|
+
|
|
1192
|
+
- # First word of the docstring should not be "This"
|
|
1193
|
+
- ruff: D404
|
|
1194
|
+
- pycodestyle: D404
|
|
1195
|
+
- pep257: D404
|
|
1196
|
+
|
|
1197
|
+
- # Section name should be properly capitalized ("{name}")
|
|
1198
|
+
- ruff: D405
|
|
1199
|
+
- pycodestyle: D405
|
|
1200
|
+
- pep257: D405
|
|
1201
|
+
|
|
1202
|
+
- # Section name should end with a newline ("{name}")
|
|
1203
|
+
- ruff: D406
|
|
1204
|
+
- pycodestyle: D406
|
|
1205
|
+
- pep257: D406
|
|
1206
|
+
|
|
1207
|
+
- # Missing argument description in the docstring for {definition}: {name}
|
|
1208
|
+
- ruff: D407
|
|
1209
|
+
- pycodestyle: D407
|
|
1210
|
+
- pep257: D407
|
|
1211
|
+
|
|
1212
|
+
- # Section underline should be in the line following the section's name ("{name}")
|
|
1213
|
+
- ruff: D408
|
|
1214
|
+
- pycodestyle: D408
|
|
1215
|
+
- pep257: D408
|
|
1216
|
+
|
|
1217
|
+
- # Section underline should match the length of its name ("{name}")
|
|
1218
|
+
- ruff: D409
|
|
1219
|
+
- pycodestyle: D409
|
|
1220
|
+
- pep257: D409
|
|
1221
|
+
|
|
1222
|
+
- # Missing blank line after section ("{name}")
|
|
1223
|
+
- ruff: D410
|
|
1224
|
+
- pycodestyle: D410
|
|
1225
|
+
- pep257: D410
|
|
1226
|
+
|
|
1227
|
+
- # Missing blank line before section ("{name}")
|
|
1228
|
+
- ruff: D411
|
|
1229
|
+
- pycodestyle: D411
|
|
1230
|
+
- pep257: D411
|
|
1231
|
+
|
|
1232
|
+
- # No blank lines allowed between a section header and its content ("{name}")
|
|
1233
|
+
- ruff: D412
|
|
1234
|
+
- pycodestyle: D412
|
|
1235
|
+
- pep257: D412
|
|
1236
|
+
|
|
1237
|
+
- # Missing blank line after last section ("{name}")
|
|
1238
|
+
- ruff: D413
|
|
1239
|
+
- pycodestyle: D413
|
|
1240
|
+
- pep257: D413
|
|
1241
|
+
|
|
1242
|
+
- # Section has no content ("{name}")
|
|
1243
|
+
- ruff: D414
|
|
1244
|
+
- pycodestyle: D414
|
|
1245
|
+
- pep257: D414
|
|
1246
|
+
|
|
1247
|
+
- # First line should end with a period, question mark, or exclamation point
|
|
1248
|
+
- ruff: D415
|
|
1249
|
+
- pycodestyle: D415
|
|
1250
|
+
- pep257: D415
|
|
1251
|
+
|
|
1252
|
+
- # Section name should end with a colon ("{name}")
|
|
1253
|
+
- ruff: D416
|
|
1254
|
+
- pycodestyle: D416
|
|
1255
|
+
- pep257: D416
|
|
1256
|
+
|
|
1257
|
+
- # Missing argument(s) in the docstring for {definition}: {name}
|
|
1258
|
+
- ruff: D417
|
|
1259
|
+
- pycodestyle: D417
|
|
1260
|
+
- pep257: D417
|
|
1261
|
+
|
|
1262
|
+
- # Function decorated with @overload shouldn't contain a docstring
|
|
1263
|
+
- ruff: D418
|
|
1264
|
+
- pycodestyle: D418
|
|
1265
|
+
- pep257: D418
|
|
1266
|
+
|
|
1267
|
+
- # Docstring is empty
|
|
1268
|
+
- ruff: D419
|
|
1269
|
+
- pycodestyle: D419
|
|
1270
|
+
- pep257: D419
|