What's New in Pylint 2.11¶
- Release
2.11
- Date
2021-09-16
Summary -- Release highlights¶
In 2.11, we added a new default checker to advise using f-string as it's
the most efficient way of formatting strings right now. You can use
pyupgrade or flynt to migrate your old % and format() automatically.
We added a new extension SetMembershipChecker that will advise the
use of set for membership test, as it's more performant than lists or tuples.
The CodeStyleChecker also got some love, check it out if you're not already
using it.
We fixed some long standing bugs, false positives, or false negatives and
we added small quality of life options like min-similarity-lines that
disable the duplication check when set to 0.
Under the hood the code for both pylint and astroid is progressively more typed, which could be helpful to you if you're using them as libraries. In order for this new typing to make more sense and stay simple, we deprecated some functions or type that will be removed in the next major version. This is an ongoing effort.
The future possible-forgotten-f-prefix check still had too much false positives,
and is delayed again. Check the possible-forgotten-f-prefix issue if you want
to provide knowledge or use case :)
New checkers¶
Added
consider-using-f-string: Emitted when .format() or '%' is being used to format a string.Closes #3592
Removed checkers¶
The python3 porting mode checker and it's
py3koption were removed. You can still find it in older pylint versions.
Extensions¶
Added new extension
SetMembershipCheckerwithuse-set-for-membershipcheck: Emitted when using an in-place definedlistortupleto do a membership test.setsare better optimized for that.Closes #4776
CodeStyleCheckerAdded
consider-using-assignment-expr: Emitted when an assignment is directly followed by an if statement and both can be combined by using an assignment expression:=. Requires Python 3.8Closes #4862
Other Changes¶
Added
py-versionconfig key (if[MASTER]section). Used for version dependant checks. Will default to whatever Python version pylint is executed with.The
invalid-namemessage is now more detailed when using multiple naming style regexes.Fix false positive for
consider-using-withif a context manager is assigned to a variable in different paths of control flow (e. g. if-else clause).Closes #4751
Fix false positive for
function-redefinedfor simple type annotationsCloses #4936
Fix false positive for
protected-accessif a protected member is used in type hints of function definitionsFix false positive
dict-iter-missing-itemsfor dictionaries only using tuples as keysCloses #3282
The
unspecified-encodingchecker now also checks calls topathlib.Path().read_text()andpathlib.Path().write_text()Closes #4945
Fix false positive
superfluous-parensfor tuples created with inner tuplesCloses #4907
Fix false positive
unused-private-memberfor accessing attributes in a class usingclsCloses #4849
Extended
consider-using-incheck to work for attribute access.Setting
min-similarity-linesto 0 now makes the similarty checker stop checking for duplicate codeCloses #4901
Fix a bug where pylint complained if the cache's parent directory does not exist
Closes #4900
The
global-variable-not-assignedchecker now catches global variables that are never reassigned in a local scope and catches (reassigned) functionsCloses #1375 Closes #330
The
consider-iterating-dictionarychecker now also considers membership checksCloses #4069
