Skip to content

Latest commit

 

History

History
231 lines (144 loc) · 8.13 KB

2.12.rst

File metadata and controls

231 lines (144 loc) · 8.13 KB

What's New in Pylint 2.12

Release:2.12
Date: TBA

Summary -- Release highlights

New checkers

  • Added missing-any-param-doc triggered when a function has neither parameter nor parameter type documentation. Undocumented parameters are now being properly identified. A warning might start to appear unexpectedly if missing-param-doc and missing-type-doc were disabled, as a new message missing-any-param-doc will be emitted instead.

    Closes #3799

  • Checkers for typing.final

    • Added overridden-final-method: Emitted when a method which is annotated with typing.final is overridden
    • Added subclassed-final-class: Emitted when a class which is annotated with typing.final is subclassed

    Closes #3197

  • Created new UnsupportedVersionChecker checker class that includes checks for features not supported by all versions indicated by a py-version.

    • Added using-f-string-in-unsupported-version checker. Issued when py-version is set to a version that does not support f-strings (< 3.6)
  • Fix useless-super-delegation false positive when default keyword argument is a variable.

  • Added new checker use-implicit-booleanness: Emitted when using collection literals for boolean comparisons

  • Added new checker use-implicit-booleaness-not-comparison: Emitted when collection literal comparison is being used to check for emptiness.

    Closes #4774

  • Added using-final-decorator-in-unsupported-version checker. Issued when py-version is set to a version that does not support typing.final (< 3.8)

  • Added configuration option exclude-too-few-public-methods to allow excluding classes from the min-public-methods checker.

    Closes #3370

  • Added new checker useless-with-lock to find incorrect usage of with statement and threading module locks. Emitted when with threading.Lock(): is used instead of with lock_instance:.

    Closes #5208

  • A new bad-configuration-section checker was added that will emit for misplaced option in pylint's top level namespace for toml configuration. Top-level dictionaries or option defined in the wrong section will still silently not be taken into account, which is tracked in a follow-up issue.

    Follow-up in #5259

  • MessageTest of the unittest testutil now requires the confidence attribute to match the expected value. If none is provided it is set to UNDEFINED.

  • add_message of the unittest testutil now actually handles the col_offset parameter and allows it to be checked against actual output in a test.

Removed checkers

Extensions

  • Added an optional extension consider-using-any-or-all: Emitted when a for loop only produces a boolean and could be replaced by any or all using a generator. Also suggests a suitable any/all statement if it is concise.

    Closes #5008

  • Moved misplaced-comparison-constant to its own extension comparison_placement. This checker was opinionated and now no longer a default. It can be reactived by adding pylint.extensions.comparison_placement to load-plugins in your config.

    Closes #1064

Other Changes

  • Fix install graphiz message which isn't needed for puml output format.

  • pylint no longer crashes when checking assignment expressions within if-statements

    Closes #5178

  • Fix accept-no-yields-doc and accept-no-return-doc not allowing missing yield or return documentation when a docstring is partially correct

    Closes #5223

  • Fix simplify-boolean-expression when condition can be inferred as False.

    Closes #5200

  • Fix exception when pyreverse parses property function of a class.

  • Improve and flatten unused-wildcard-import message

    Closes #3859

  • In length checker, len-as-condition has been renamed as use-implicit-booleaness-not-len in order to be consistent with use-implicit-booleaness-not-comparison.

  • Fixed protected-access for accessing of attributes and methods of inner classes

    Closes #3066

  • Update literal-comparison` checker to ignore tuple literals

    Closes #3031

  • The functional testutils now accept end_lineno and end_column. Expected output files without these will trigger a DeprecationWarning. Expected output files can be easily updated with the python tests/test_functional.py --update-functional-output command.

  • The functional testutils now correctly check the distinction betweeen HIGH and UNDEFINED confidence. Expected output files without defiend confidence levels will now trigger a DeprecationWarning. Expected output files can be easily updated with the python tests/test_functional.py --update-functional-output command.

  • undefined-variable now correctly flags variables which only receive a type annotations and never get assigned a value

    Closes #5140

  • undefined-variable now correctly considers the line numbering and order of classes used in metaclass declarations

    Closes #4031

  • used-before-assignment now correctly considers references to classes as type annotation or default values in first-level methods

    Closes #3771

  • undefined-variable and unused-variable now correctly trigger for assignment expressions in functions defaults

    Fixes part of #3688

  • self-cls-assignment now also considers tuple assignment

  • undefined-variable now correctly triggers for assignment expressions in if ... else statements This includes a basic form of control flow inference for if ... else statements using constant boolean values

    Closes #3688

  • Fix crash for unused-private-member when checking private members on __class__

    Closes #5261

  • Fix double emitting of not-callable on inferrable properties

    Closes #4426

  • Support configuring mixin class pattern via mixin-class-rgx

  • Normalize the input to the ignore-paths option to allow both Posix and Windows paths

    Closes #5194

  • mising-param-doc now correctly parses asterisks for variable length and keyword parameters

    Closes #3733

  • mising-param-doc now correctly handles Numpy parameter documentation without explicit typing

    Closes #5222

  • The --jobs parameter now falls back to 1 if the host operating system does not have functioning shared semaphore implementation.

    Closes #5216

  • Crashes when a list is encountered in a toml configuration do not happen anymore.

    Closes #4580

  • Fix crash for protected-access on (outer) class traversal

  • Make yn validator case insensitive, to allow for True and False in config files.

  • The last version compatible with python '3.6.0' and '3.6.1' is pylint '2.9.3'. We did not realize that when adding incompatible typing at the time, and all versions since are broken for this interpreter. 2.12.0 meta-information will permit to download pylint on those interpreters but the installation will fail and tell you to install '2.9.3' instead. pylint 2.12.1 will require python >= 3.6.2.

    Closes #5171 Follow-up in #5065

  • Added the --enable-all-extensions command line option. It will load all available extensions which can be listed by running --list-extensions

  • It is now recommended to do pylint development on Python 3.8 or higher. This allows using the latest ast parser.

  • All standard jobs in the pylint CI now run on Python 3.8 by default. We still support python 3.6 and 3.7 and run tests for those interpreters.

  • Fix crash on open() calls when the mode argument is not a simple string.

    Partially closes #5321

  • Add ability to add end_line and end_column to the --msg-template option. With the standard TextReporter this will add the line and column number of the end of a node to the output of Pylint. If these numbers are unknown, they are represented by an empty string.

  • Introduced primer tests and a configuration tests framework. The helper classes available in pylint/testutil/ are still unstable and might be modified in the near future.

    Closes #4412 #5287