Releases: pylint-dev/pylint
v2.8.3
Pin astroid to 2.5.6 for pylint 2.8.3
v2.8.2
pylint-2.8.1
-
Add numversion back (temporarily) in
__pkginfo__
because it broke Pylama and revert the unnecessary
pylint.version
breaking change.Closes #4399
pylint-2.8.0
-
New refactoring message
consider-using-with
. This message is emitted if resource-allocating functions or methods of the
standard library (likeopen()
orthreading.Lock.acquire()
) that can be used as a context manager are called without
awith
block.Closes #3413
-
Resolve false positives on unused variables in decorator functions
Closes #4252
-
Add new extension
ConfusingConsecutiveElifChecker
. This optional checker emits a refactoring message (R5601confusing-consecutive-elif
)
if if/elif statements with different indentation levels follow directly one after the other. -
New option
--output=<file>
to output result to a file rather than printing to stdout.Closes #1070
-
Use a prescriptive message for
unidiomatic-typecheck
Closes #3891
-
Apply
const-naming-style
to module constants annotated with
typing.Final
-
The packaging is now done via setuptools exclusively.
doc
,tests
,man
,elisp
andChangelog
are
not packaged anymore - reducing the size of the package by 75%. -
Debian packaging is now (officially) done in https://salsa.debian.org/python-team/packages/pylint.
-
The 'doc' extra-require has been removed.
-
__pkginfo__
now only contain__version__
(also accessible withpylint.__version__
), other meta-information are still
accessible withimport importlib;metadata.metadata('pylint')
. -
COPYING has been renamed to LICENSE for standardization.
-
Fix false-positive
used-before-assignment
in function returns.Closes #4301
-
Updated
astroid
to 2.5.3 -
Add
consider-using-min-max-builtin
check for if statement which could be replaced by Python builtin min or maxCloses #3406
-
Don't auto-enable postponed evaluation of type annotations with Python 3.10
-
Update
astroid
to 2.5.4 -
Add new extension
TypingChecker
. This optional checker can detect the use of deprecated typing aliases
and can suggest the use of the alternative union syntax where possible.
(For example, 'typing.Dict' can be replaced by 'dict', and 'typing.Unions' by '|', etc.)
Make sure to check the config options if you plan on using it! -
Reactivates old counts in report mode.
Closes #3819
-
During detection of
inconsistent-return-statements
consider thatassert False
is a return node.Closes #4019
-
Run will not fail if score exactly equals
config.fail_under
. -
Functions that never returns may declare
NoReturn
as type hints, so that
inconsistent-return-statements
is not emitted. -
Improved protected access checks to allow access inside class methods
Closes #1159
-
Fix issue with PEP 585 syntax and the use of
collections.abc.Set
-
Fix issue that caused class variables annotated with
typing.ClassVar
to be
identified as class constants. Now, class variables annotated with
typing.Final
are identified as such.Closes #4277
-
Continuous integration with read the doc has been added.
Closes #3850
-
Don't show
DuplicateBasesError
for attribute access -
Fix crash when checking
setup.cfg
for pylint config when there are non-ascii characters in thereCloses #4328
-
Allow code flanked in backticks to be skipped by spellchecker
Closes #4319
-
Allow Python tool directives (for black, flake8, zimports, isort, mypy, bandit, pycharm) at beginning of comments to be skipped by spellchecker
Closes #4320
-
Fix issue that caused emacs pylint to fail when used with tramp
-
Improve check for invalid PEP 585 syntax inside functions
if postponed evaluation of type annotations is enabled -
Improve check for invalid PEP 585 syntax as default function arguments
pylint-2.7.4: Fix disabled warning not ignored (#4268)
pylint-2.7.3
-
Introduce logic for checking deprecated attributes in DeprecationMixin.
-
Reduce usage of blacklist/whitelist terminology. Notably,
extension-pkg-allow-list
is an
alternative toextension-pkg-whitelist
and the messageblacklisted-name
is now emitted as
disallowed-name
. The previous names are accepted to maintain backward compatibility. -
Move deprecated checker to
DeprecatedMixin
Closes #4086
-
Bump
astroid
version to2.5.2
-
Fix false positive for
method-hidden
when using private attribute and methodCloses #3936
-
use-symbolic-message-instead
now also works on legacy messages likeC0111
(missing-docstring
). -
Remove unwanted print to stdout from
_emit_no_member
-
Introduce a command-line option to specify pyreverse output directory
Closes #4159
-
Fix issue with Enums and
class-attribute-naming-style=snake_case
Closes #4149
-
Add
allowed-redefined-builtins
option for fine tuningredefined-builtin
check.Close #3263
-
Fix issue when executing with
python -m pylint
Closes #4161
-
Exempt
typing.TypedDict
fromtoo-few-public-methods
check.Closes #4180
-
Fix false-positive
no-member
for typed annotations without default value.Closes #3167
-
Add
--class-const-naming-style
for Enum constants and class variables annotated
withtyping.ClassVar
Closes #4181
-
Fix astroid.Inference error for undefined-variables with ``len()```
Closes #4215
-
Fix column index on FIXME warning messages
Closes #4218
-
Improve handling of assignment expressions, better edge case handling
-
Improve check if class is subscriptable PEP585
-
Fix documentation and filename handling of --import-graph
-
Fix false-positive for
unused-import
on class keyword argumentsCloses #3202
-
Fix regression with plugins on PYTHONPATH if latter is cwd
Closes #4252
pylint-2.7.2
pylint-2.7.1
-
Expose
UnittestLinter
in pylint.testutils -
Don't check directories starting with '.' when using register_plugins
Closes #4119
pylint-2.7.0
-
Introduce DeprecationMixin for reusable deprecation checks.
Closes #4049
-
Fix false positive for
builtin-not-iterating
whenmap
receives iterableCloses #4078
-
Python 3.6+ is now required.
-
Fix false positive for
builtin-not-iterating
whenzip
receives iterable -
Add
nan-comparison
check for NaN comparisons -
Bug fix for empty-comment message line number.
Closes #4009
-
Only emit
bad-reversed-sequence
on dictionaries if below py3.8Closes #3940
-
Handle class decorators applied to function.
Closes #3882
-
Add check for empty comments
-
Fix minor documentation issue in contribute.rst
-
Enums are now required to be named in UPPER_CASE by
invalid-name
.Close #3834
-
Add missing checks for deprecated functions.
-
Postponed evaluation of annotations are now recognized by default if python version is above 3.10
Closes #3992
-
Fix column metadata for anomalous backslash lints
-
Drop support for Python 3.5
-
Add support for pep585 with postponed evaluation
Closes #3320
-
Check alternative union syntax - PEP 604
Closes #4065
-
Fix multiple false positives with assignment expressions
-
Fix TypedDict inherit-non-class false-positive Python 3.9+
Closes #1927
-
Fix issue with nested PEP 585 syntax
-
Fix issue with nested PEP 604 syntax
-
Fix a crash in
undefined-variable
caused by chained attributes in metaclassClose #3742
-
Fix false positive for
not-async-context-manager
whencontextlib.asynccontextmanager
is usedClose #3862
-
Fix linter multiprocessing pool shutdown (triggered warnings when runned in parallels with other pytest plugins)
Closes #3779
-
Fix a false-positive emission of
no-self-use
andunused-argument
for methods
of generic structural types (Protocol[T]
)Closes #3885
-
Fix bug that lead to duplicate messages when using
--jobs 2
or more.Close #3584
-
Adds option
check-protected-access-in-special-methods
in the ClassChecker to activate/deactivate
protected-access
message emission for single underscore prefixed attribute in special methods.Close #3120
-
Fix vulnerable regular expressions in
pyreverse
Close #3811
-
inconsistent-return-statements
message is now emitted if one oftry/except
statement
is not returning explicitly while the other do.Closes #3468
-
Fix
useless-super-delegation
false positive when default keyword argument is a dictionnary.Close #3773
-
Fix a crash when a specified config file does not exist
-
Add support to
ignored-argument-names
in DocstringParameterChecker and addsuseless-param-doc
anduseless-type-doc
messages.Close #3800
-
Enforce docparams consistently when docstring is not present
Close #2738
-
Fix
duplicate-code
false positive when lines only contain whitespace and non-alphanumeric characters (e.g. parentheses, bracket, comman, etc.) -
Improve lint message for
singleton-comparison
with bools -
Fix spell-checker crash on indented docstring lines that look like # comments
Close #3786
-
Fix AttributeError in checkers/refactoring.py
-
Improve sphinx directives spelling filter
-
Fix a bug with postponed evaluation when using aliases for annotations.
Close #3798
-
Fix minor documentation issues
-
Improve the performance of the line length check.
-
Removed incorrect deprecation of
inspect.getfullargspec
-
Fix
signature-differs
false positive for functions with variadicsClose #3737
-
Fix a crash in
consider-using-enumerate
when encounteringrange()
without argumentsClose #3735
-
len-as-conditions
is now triggered only for classes that are inheriting directly from list, dict, or set and not implementing the__bool__
function, or from generators like range or list/dict/set comprehension. This should reduce the false positives for other classes, like pandas's DataFrame or numpy's Array.Close #1879
-
Fixes duplicate-errors not working with -j2+
Close #3314
-
generated-members
now matches the qualified name of membersClose #2498
-
Add check for bool function to
len-as-condition
-
Add
simplifiable-condition
check for extraneous constants in conditionals using and/or. -
Add
condition-evals-to-constant
check for conditionals using and/or that evaluate to a constant.Close #3407
-
Changed setup.py to work with distlib
Close #3555
-
New check:
consider-using-generator
This check warns when a comprehension is used inside an
any
orall
function,
since it is unnecessary and should be replaced by a generator instead.
Using a generator would be less code and way faster.Close #3165
-
Add Github Actions to replace Travis and AppVeyor in the future
pylint-2.6.2
-
Astroid version has been set as < 2.5
Close #4093