Contents Menu Expand Light mode Dark mode Auto light/dark mode
Pylint 2.15.2 documentation
Pylint 2.15.2 documentation
  • Tutorial

User Guide

  • Installation
    • Command line installation
    • Editor and IDE integration
      • Using Pylint through Flymake in Emacs
      • Integrate Pylint with TextMate
    • Pre-commit integration
    • Installation with multiple interpreters
    • Show your usage
    • Upgrading pylint
  • Usage
    • Running Pylint
    • Pylint output
  • Messages
    • Messages overview
      • astroid-error / F0002
      • config-parse-error / F0011
      • fatal / F0001
      • method-check-failed / F0202
      • parse-error / F0010
      • old-import-error/F0401
        • import-error / E0401
      • abstract-class-instantiated / E0110
      • access-member-before-definition / E0203
      • assigning-non-slot / E0237
      • assignment-from-no-return / E1111
      • assignment-from-none / E1128
      • await-outside-async / E1142
      • bad-configuration-section / E0014
      • bad-except-order / E0701
      • bad-exception-cause / E0705
      • bad-format-character / E1300
      • bad-plugin-value / E0013
      • bad-reversed-sequence / E0111
      • bad-str-strip-call / E1310
      • bad-string-format-type / E1307
      • bad-super-call / E1003
      • bidirectional-unicode / E2502
      • broken-collections-callable / E6005
      • broken-noreturn / E6004
      • catching-non-exception / E0712
      • class-variable-slots-conflict / E0242
      • continue-in-finally / E0116
      • dict-iter-missing-items / E1141
      • duplicate-argument-name / E0108
      • duplicate-bases / E0241
      • format-needs-mapping / E1303
      • function-redefined / E0102
      • import-error / E0401
      • inconsistent-mro / E0240
      • inherit-non-class / E0239
      • init-is-generator / E0100
      • invalid-all-format / E0605
      • invalid-all-object / E0604
      • invalid-bool-returned / E0304
      • invalid-bytes-returned / E0308
      • invalid-character-backspace / E2510
      • invalid-character-carriage-return / E2511
      • invalid-character-esc / E2513
      • invalid-character-nul / E2514
      • invalid-character-sub / E2512
      • invalid-character-zero-width-space / E2515
      • invalid-class-object / E0243
      • invalid-enum-extension / E0244
      • invalid-envvar-value / E1507
      • invalid-format-returned / E0311
      • invalid-getnewargs-ex-returned / E0313
      • invalid-getnewargs-returned / E0312
      • invalid-hash-returned / E0309
      • invalid-index-returned / E0305
      • invalid-length-hint-returned / E0310
      • invalid-length-returned / E0303
      • invalid-metaclass / E1139
      • invalid-repr-returned / E0306
      • invalid-sequence-index / E1126
      • invalid-slice-index / E1127
      • invalid-slots / E0238
      • invalid-slots-object / E0236
      • invalid-star-assignment-target / E0113
      • invalid-str-returned / E0307
      • invalid-unary-operand-type / E1130
      • invalid-unicode-codec / E2501
      • logging-format-truncated / E1201
      • logging-too-few-args / E1206
      • logging-too-many-args / E1205
      • logging-unsupported-format / E1200
      • method-hidden / E0202
      • misplaced-bare-raise / E0704
      • misplaced-format-function / E0119
      • missing-format-string-key / E1304
      • missing-kwoa / E1125
      • mixed-format-string / E1302
      • modified-iterating-dict / E4702
      • modified-iterating-set / E4703
      • no-member / E1101
      • no-method-argument / E0211
      • no-name-in-module / E0611
      • no-self-argument / E0213
      • no-value-for-parameter / E1120
      • non-iterator-returned / E0301
      • nonexistent-operator / E0107
      • nonlocal-and-global / E0115
      • nonlocal-without-binding / E0117
      • not-a-mapping / E1134
      • not-an-iterable / E1133
      • not-async-context-manager / E1701
      • not-callable / E1102
      • not-context-manager / E1129
      • not-in-loop / E0103
      • notimplemented-raised / E0711
      • potential-index-error / E0643
      • raising-bad-type / E0702
      • raising-non-exception / E0710
      • redundant-keyword-arg / E1124
      • relative-beyond-top-level / E0402
      • repeated-keyword / E1132
      • return-arg-in-generator / E0106
      • return-in-init / E0101
      • return-outside-function / E0104
      • star-needs-assignment-target / E0114
      • syntax-error / E0001
      • too-few-format-args / E1306
      • too-many-format-args / E1305
      • too-many-function-args / E1121
      • too-many-star-expressions / E0112
      • truncated-format-string / E1301
      • undefined-all-variable / E0603
      • undefined-variable / E0602
      • unexpected-keyword-arg / E1123
      • unexpected-special-method-signature / E0302
      • unhashable-member / E1143
      • unpacking-non-sequence / E0633
      • unrecognized-inline-option / E0011
      • unrecognized-option / E0015
      • unsubscriptable-object / E1136
      • unsupported-assignment-operation / E1137
      • unsupported-binary-operation / E1131
      • unsupported-delete-operation / E1138
      • unsupported-membership-test / E1135
      • used-before-assignment / E0601
      • used-prior-global-declaration / E0118
      • yield-inside-async-function / E1700
      • yield-outside-function / E0105
      • bad-context-manager/E0235
        • unexpected-special-method-signature / E0302
      • bad-exception-context/E0703
        • bad-exception-cause / E0705
      • bad-option-value/E0012
        • useless-option-value / R0022
        • unknown-option-value / W0012
      • maybe-no-member/E1103
        • no-member / E1101
      • old-non-iterator-returned-2/E0234
        • non-iterator-returned / E0301
      • old-unbalanced-tuple-unpacking/E0632
        • unbalanced-tuple-unpacking / W0632
      • unhashable-dict-key/E1140
        • unhashable-member / E1143
      • abstract-method / W0223
      • anomalous-backslash-in-string / W1401
      • anomalous-unicode-escape-in-string / W1402
      • arguments-differ / W0221
      • arguments-out-of-order / W1114
      • arguments-renamed / W0237
      • assert-on-string-literal / W0129
      • assert-on-tuple / W0199
      • attribute-defined-outside-init / W0201
      • bad-builtin / W0141
      • bad-format-string / W1302
      • bad-format-string-key / W1300
      • bad-indentation / W0311
      • bad-open-mode / W1501
      • bad-staticmethod-argument / W0211
      • bad-thread-instantiation / W1506
      • bare-except / W0702
      • binary-op-exception / W0711
      • boolean-datetime / W1502
      • broad-except / W0703
      • cell-var-from-loop / W0640
      • comparison-with-callable / W0143
      • confusing-with-statement / W0124
      • consider-ternary-expression / W0160
      • dangerous-default-value / W0102
      • deprecated-argument / W4903
      • deprecated-class / W4904
      • deprecated-decorator / W4905
      • deprecated-method / W4902
      • deprecated-module / W4901
      • deprecated-typing-alias / W6001
      • differing-param-doc / W9017
      • differing-type-doc / W9018
      • duplicate-except / W0705
      • duplicate-key / W0109
      • duplicate-string-formatting-argument / W1308
      • duplicate-value / W0130
      • eq-without-hash / W1641
      • eval-used / W0123
      • exec-used / W0122
      • expression-not-assigned / W0106
      • f-string-without-interpolation / W1309
      • fixme / W0511
      • forgotten-debug-statement / W1515
      • format-combined-specification / W1305
      • format-string-without-interpolation / W1310
      • global-at-module-level / W0604
      • global-statement / W0603
      • global-variable-not-assigned / W0602
      • global-variable-undefined / W0601
      • implicit-str-concat / W1404
      • import-self / W0406
      • inconsistent-quotes / W1405
      • invalid-envvar-default / W1508
      • invalid-format-index / W1307
      • invalid-overridden-method / W0236
      • isinstance-second-argument-not-valid-type / W1116
      • keyword-arg-before-vararg / W1113
      • logging-format-interpolation / W1202
      • logging-fstring-interpolation / W1203
      • logging-not-lazy / W1201
      • lost-exception / W0150
      • method-cache-max-size-none / W1518
      • misplaced-future / W0410
      • missing-any-param-doc / W9021
      • missing-format-argument-key / W1303
      • missing-format-attribute / W1306
      • missing-param-doc / W9015
      • missing-parentheses-for-call-in-test / W0126
      • missing-raises-doc / W9006
      • missing-return-doc / W9011
      • missing-return-type-doc / W9012
      • missing-timeout / W3101
      • missing-type-doc / W9016
      • missing-yield-doc / W9013
      • missing-yield-type-doc / W9014
      • modified-iterating-list / W4701
      • multiple-constructor-doc / W9005
      • nan-comparison / W0177
      • non-ascii-file-name / W2402
      • non-parent-init-called / W0233
      • non-str-assignment-to-dunder-name / W1115
      • overlapping-except / W0714
      • overridden-final-method / W0239
      • pointless-statement / W0104
      • pointless-string-statement / W0105
      • possibly-unused-variable / W0641
      • preferred-module / W0407
      • protected-access / W0212
      • raise-missing-from / W0707
      • raising-format-tuple / W0715
      • redeclared-assigned-name / W0128
      • redefined-builtin / W0622
      • redefined-loop-name / W2901
      • redefined-outer-name / W0621
      • redefined-slots-in-subclass / W0244
      • redundant-returns-doc / W9008
      • redundant-u-string-prefix / W1406
      • redundant-unittest-assert / W1503
      • redundant-yields-doc / W9010
      • reimported / W0404
      • self-assigning-variable / W0127
      • self-cls-assignment / W0642
      • shallow-copy-environ / W1507
      • signature-differs / W0222
      • subclassed-final-class / W0240
      • subprocess-popen-preexec-fn / W1509
      • subprocess-run-check / W1510
      • super-init-not-called / W0231
      • super-without-brackets / W0245
      • too-many-try-statements / W0717
      • try-except-raise / W0706
      • unbalanced-tuple-unpacking / W0632
      • undefined-loop-variable / W0631
      • unknown-option-value / W0012
      • unnecessary-ellipsis / W2301
      • unnecessary-lambda / W0108
      • unnecessary-pass / W0107
      • unnecessary-semicolon / W0301
      • unreachable / W0101
      • unspecified-encoding / W1514
      • unused-argument / W0613
      • unused-format-string-argument / W1304
      • unused-format-string-key / W1301
      • unused-import / W0611
      • unused-private-member / W0238
      • unused-variable / W0612
      • unused-wildcard-import / W0614
      • useless-else-on-loop / W0120
      • useless-param-doc / W9019
      • useless-parent-delegation / W0246
      • useless-type-doc / W9020
      • useless-with-lock / W2101
      • using-constant-test / W0125
      • using-f-string-in-unsupported-version / W2601
      • using-final-decorator-in-unsupported-version / W2602
      • while-used / W0149
      • wildcard-import / W0401
      • wrong-exception-operation / W0716
      • cache-max-size-none/W1517
        • method-cache-max-size-none / W1518
      • implicit-str-concat-in-sequence/W1403
        • implicit-str-concat / W1404
      • lru-cache-decorating-method/W1516
        • method-cache-max-size-none / W1518
      • old-assignment-from-none/W1111
        • assignment-from-none / E1128
      • old-deprecated-argument/W1511
        • deprecated-argument / W4903
      • old-deprecated-class/W1512
        • deprecated-class / W4904
      • old-deprecated-decorator/W1513
        • deprecated-decorator / W4905
      • old-deprecated-method/W1505
        • deprecated-method / W4902
      • old-deprecated-module/W0402
        • deprecated-module / W4901
      • old-empty-docstring/W0132
        • empty-docstring / C0112
      • old-missing-param-doc/W9003
        • missing-param-doc / W9015
      • old-missing-returns-doc/W9007
        • missing-return-doc / W9011
      • old-missing-type-doc/W9004
        • missing-type-doc / W9016
      • old-missing-yields-doc/W9009
        • missing-yield-doc / W9013
      • old-non-iterator-returned-1/W0234
        • non-iterator-returned / E0301
      • old-unidiomatic-typecheck/W0154
        • unidiomatic-typecheck / C0123
      • old-unpacking-non-sequence/W0633
        • unpacking-non-sequence / E0633
      • useless-super-delegation/W0235
        • useless-parent-delegation / W0246
      • bad-classmethod-argument / C0202
      • bad-docstring-quotes / C0198
      • bad-file-encoding / C2503
      • bad-mcs-classmethod-argument / C0204
      • bad-mcs-method-argument / C0203
      • compare-to-empty-string / C1901
      • compare-to-zero / C2001
      • consider-iterating-dictionary / C0201
      • consider-using-any-or-all / C0501
      • consider-using-dict-items / C0206
      • consider-using-enumerate / C0200
      • consider-using-f-string / C0209
      • disallowed-name / C0104
      • docstring-first-line-empty / C0199
      • empty-docstring / C0112
      • import-outside-toplevel / C0415
      • import-private-name / C2701
      • invalid-characters-in-docstring / C0403
      • invalid-name / C0103
      • line-too-long / C0301
      • misplaced-comparison-constant / C2201
      • missing-class-docstring / C0115
      • missing-final-newline / C0304
      • missing-function-docstring / C0116
      • missing-module-docstring / C0114
      • mixed-line-endings / C0327
      • multiple-imports / C0410
      • multiple-statements / C0321
      • non-ascii-module-import / C2403
      • non-ascii-name / C2401
      • single-string-used-for-slots / C0205
      • singleton-comparison / C0121
      • superfluous-parens / C0325
      • too-many-lines / C0302
      • trailing-newlines / C0305
      • trailing-whitespace / C0303
      • typevar-double-variance / C0131
      • typevar-name-incorrect-variance / C0105
      • typevar-name-mismatch / C0132
      • unexpected-line-ending-format / C0328
      • ungrouped-imports / C0412
      • unidiomatic-typecheck / C0123
      • unnecessary-direct-lambda-call / C3002
      • unnecessary-dunder-call / C2801
      • unnecessary-lambda-assignment / C3001
      • unneeded-not / C0113
      • use-implicit-booleaness-not-comparison / C1803
      • use-implicit-booleaness-not-len / C1802
      • use-maxsplit-arg / C0207
      • use-sequence-for-iteration / C0208
      • useless-import-alias / C0414
      • wrong-import-order / C0411
      • wrong-import-position / C0413
      • wrong-spelling-in-comment / C0401
      • wrong-spelling-in-docstring / C0402
      • blacklisted-name/C0102
        • disallowed-name / C0104
      • len-as-condition/C1801
        • use-implicit-booleaness-not-len / C1802
      • missing-docstring/C0111
        • missing-module-docstring / C0114
        • missing-class-docstring / C0115
        • missing-function-docstring / C0116
      • old-misplaced-comparison-constant/C0122
        • misplaced-comparison-constant / C2201
      • old-non-ascii-name/C0144
        • non-ascii-name / C2401
      • chained-comparison / R1716
      • comparison-of-constants / R0133
      • comparison-with-itself / R0124
      • condition-evals-to-constant / R1727
      • confusing-consecutive-elif / R5601
      • consider-alternative-union-syntax / R6003
      • consider-merging-isinstance / R1701
      • consider-swap-variables / R1712
      • consider-using-alias / R6002
      • consider-using-assignment-expr / R6103
      • consider-using-dict-comprehension / R1717
      • consider-using-from-import / R0402
      • consider-using-generator / R1728
      • consider-using-get / R1715
      • consider-using-in / R1714
      • consider-using-join / R1713
      • consider-using-max-builtin / R1731
      • consider-using-min-builtin / R1730
      • consider-using-namedtuple-or-dataclass / R6101
      • consider-using-set-comprehension / R1718
      • consider-using-sys-exit / R1722
      • consider-using-ternary / R1706
      • consider-using-tuple / R6102
      • consider-using-with / R1732
      • cyclic-import / R0401
      • duplicate-code / R0801
      • else-if-used / R5501
      • empty-comment / R2044
      • inconsistent-return-statements / R1710
      • literal-comparison / R0123
      • no-classmethod-decorator / R0202
      • no-else-break / R1723
      • no-else-continue / R1724
      • no-else-raise / R1720
      • no-else-return / R1705
      • no-self-use / R6301
      • no-staticmethod-decorator / R0203
      • property-with-parameters / R0206
      • redefined-argument-from-local / R1704
      • redefined-variable-type / R0204
      • simplifiable-condition / R1726
      • simplifiable-if-expression / R1719
      • simplifiable-if-statement / R1703
      • simplify-boolean-expression / R1709
      • stop-iteration-return / R1708
      • super-with-arguments / R1725
      • too-complex / R1260
      • too-few-public-methods / R0903
      • too-many-ancestors / R0901
      • too-many-arguments / R0913
      • too-many-boolean-expressions / R0916
      • too-many-branches / R0912
      • too-many-instance-attributes / R0902
      • too-many-locals / R0914
      • too-many-nested-blocks / R1702
      • too-many-public-methods / R0904
      • too-many-return-statements / R0911
      • too-many-statements / R0915
      • trailing-comma-tuple / R1707
      • unnecessary-comprehension / R1721
      • unnecessary-dict-index-lookup / R1733
      • unnecessary-list-index-lookup / R1736
      • use-a-generator / R1729
      • use-dict-literal / R1735
      • use-list-literal / R1734
      • use-set-for-membership / R6201
      • useless-object-inheritance / R0205
      • useless-option-value / R0022
      • useless-return / R1711
      • old-no-self-use/R0201
        • no-self-use / R6301
      • old-simplifiable-if-statement/R0102
        • simplifiable-if-statement / R1703
      • old-too-many-nested-blocks/R0101
        • too-many-nested-blocks / R1702
      • bad-inline-option / I0010
      • c-extension-no-member / I1101
      • deprecated-pragma / I0022
      • file-ignored / I0013
      • locally-disabled / I0011
      • raw-checker-failed / I0001
      • suppressed-message / I0020
      • use-symbolic-message-instead / I0023
      • useless-suppression / I0021
      • deprecated-disable-all/I0014
        • deprecated-pragma / I0022
    • Messages control
  • Configuration
    • Standard Checkers
    • Extensions
  • Checkers
    • Pylint features
    • Optional checkers

Developer Guide

  • API
    • Pylint
    • epylint
  • How To Guides
    • How to Write a Checker
    • How To Write a Pylint Plugin
    • Transform plugins
  • Technical Reference
    • Startup and the Linter Class
    • Checkers
  • Contributing to pylint
    • Contributing
    • Testing pylint
      • Contributor installation
      • Launching tests
      • Writing tests
    • Profiling and performance analysis
    • Releasing a pylint version

Additional tools

  • Pyreverse
  • Symilar

Changelog

  • 2.x
    • What's New in Pylint 2.16
    • What's New in Pylint 2.15
    • What's New in Pylint 2.14
      • Summary -- Release highlights
      • New checkers
      • Removed checkers
      • Extensions
      • Other Changes
      • Deprecations
      • Full changelog
    • What's New in Pylint 2.13
      • Summary -- Release highlights
      • New checkers
      • Removed checkers
      • Extensions
      • Other Changes
      • Full changelog
    • What's New in Pylint 2.12
      • Summary -- Release highlights
      • New checkers
      • Extensions
      • Other Changes
      • Full changelog
    • What's New in Pylint 2.11
      • Summary -- Release highlights
      • New checkers
      • Removed checkers
      • Extensions
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.10
      • Summary -- Release highlights
      • New checkers
      • Extensions
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.9
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.8
      • Summary -- Release highlights
      • Breaking changes
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.7
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.6
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.5
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.4
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.3
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.2
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.1
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 2.0
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
  • 1.x
    • What's New In Pylint 1.9
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 1.8
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Full changelog
    • What's New In Pylint 1.7
      • Summary -- Release highlights
      • New checkers
      • Other Changes
      • Bug fixes
      • Removed Changes
      • Full changelog
    • What's New In Pylint 1.6
      • Summary -- Release highlights
      • New checkers
      • New features
      • Bug fixes
      • Other Changes
      • Deprecated features
      • Removed features
      • Full changelog
    • What's New In Pylint 1.5
    • What's New In Pylint 1.4
    • What's New In Pylint 1.3
    • What's New In Pylint 1.2
    • What's New In Pylint 1.1
    • What's New In Pylint 1.0
  • 0.x
    • What's New in Pylint 0.28.0?
    • What's New in Pylint 0.27.0?
    • What's New in Pylint 0.26.0?
    • What's New in Pylint 0.25.2?
    • What's New in Pylint 0.25.1?
    • What's New in Pylint 0.25.0?
    • What's New in Pylint 0.24.0?
    • What's New in Pylint 0.23.0?
    • What's New in Pylint 0.22.0?
    • What's New in Pylint 0.21.4?
    • What's New in Pylint 0.21.3?
    • What's New in Pylint 0.21.2?
    • What's New in Pylint 0.21.1?
    • What's New in Pylint 0.21.0?
    • What's New in Pylint 0.20.0?
    • What's New in Pylint 0.19.0?
    • What's New in Pylint 0.18.0?
    • What's New in Pylint 0.17.0?
    • What's New in Pylint 0.16.0?
    • What's New in Pylint 0.15.2?
    • What's New in Pylint 0.15.1?
    • What's New in Pylint 0.15.0?
    • What's New in Pylint 0.14.0?
    • What's New in Pylint 0.13.2?
    • What's New in Pylint 0.13.1?
    • What's New in Pylint 0.13.0?
    • What's New in Pylint 0.12.2?
    • What's New in Pylint 0.12.1?
    • What's New in Pylint 0.12.0?
    • What's New in Pylint 0.11.0?
    • What's New in Pylint 0.10.0?
    • What's New in Pylint 0.9.0?
    • What's New in Pylint 0.8.1?
    • What's New in Pylint 0.8.0?
    • What's New in Pylint 0.7.0?
    • What's New in Pylint 0.6.4?
    • What's New in Pylint 0.6.3?
    • What's New in Pylint 0.6.2?
    • What's New in Pylint 0.6.1?
    • What's New in Pylint 0.6.0?
    • What's New in Pylint 0.5.0?
    • What's New in Pylint 0.4.2?
    • What's New in Pylint 0.4.1?
    • What's New in Pylint 0.4.0?
    • What's New in Pylint 0.3.3?
    • What's New in Pylint 0.3.2?
    • What's New in Pylint 0.3.1?
    • What's New in Pylint 0.3.0?
    • What's New in Pylint 0.2.1?
    • What's New in Pylint 0.2.0?
    • What's New in Pylint 0.1.2?
    • What's New in Pylint 0.1.1?
    • What's New in Pylint 0.1?

Support

  • Frequently Asked Questions
  • Contact

We welcome all forms of contributions such as updates for documentation, new code, checking issues for duplicates or telling us that we can close them, confirming that issues still exist, creating issues because you found a bug or want a feature, etc. Everything is much appreciated!

Please follow the code of conduct and check the Contributor Guides if you want to make a code contribution.

Copyright © 2003-2022, Logilab, PyCQA and contributors | Last updated on Sep 18, 2022. | Built with Sphinx and @pradyunsg's Furo theme. | Show Source