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