Releases: pylint-dev/pylint
v3.0.0-a4
v2.9.0
-
Python 3.10 is now supported.
-
Add type annotations to pyreverse dot files
Closes #1548
-
Fix missing support for detecting deprecated aliases to existing
functions/methods.Closes #4618
-
astroid has been upgraded to 2.6.1
-
Added various deprecated functions/methods for python 3.10, 3.7, 3.6 and 3.3
-
Fix false positive
useless-type-doc
on ignored argument usingpylint.extensions.docparams
when a function was typed using pep484 but not inside the docstring. -
setuptools_scm
has been removed and replaced bytbump
in order to not
have hidden runtime dependencies to setuptools -
Fix a crash when a test function is decorated with
@pytest.fixture
and astroid can't
infer the name of the decorator when usingopen
withoutwith
.Closes #4612
-
Added
deprecated-decorator
: Emitted when deprecated decorator is used.Closes #4429
-
Added
ignore-paths
behaviour. Defined regex patterns are matched against full file path.Close #2541
-
Fix false negative for
consider-using-with
if calls likeopen()
were used outside of assignment expressions. -
The warning for
arguments-differ
now signals explicitly the difference it detected
by naming the argument or arguments that changed and the type of change that occurred. -
Suppress
consider-using-with
inside context managers.Closes #4430
-
Added
--fail-on
option to return non-zero exit codes regardless of--fail-under
value. -
numversion tuple contains integers again to fix multiple pylint's plugins that relied on it
Closes #4420
-
Fix false-positive
too-many-ancestors
when inheriting from builtin classes,
especially from thecollections.abc
module -
Stdlib deprecated modules check is moved to stdlib checker. New deprecated
modules are added. -
Fix raising false-positive
no-member
on abstract properties -
Created new error message called
arguments-renamed
which identifies any changes at the parameter
names of overridden functions.Closes #3536
-
New checker
consider-using-dict-items
. Emitted when iterating over dictionary keys and then
indexing the same dictionary with the key within loop body.Closes #3389
-
Don't emit
import-error
if import guarded behindif sys.version_info >= (x, x)
-
Fix incompatibility with Python 3.6.0 caused by
typing.Counter
andtyping.NoReturn
usageCloses #4412
-
New checker
use-maxsplit-arg
. Emitted either when accessing only the first or last
element ofstr.split()
.Closes #4440
-
Add ignore_signatures to duplicate code checker
Closes #3619
-
Fix documentation errors in "Block disables" paragraph of User Guide.
-
New checker
unnecessary-dict-index-lookup
. Emitted when iterating over dictionary items
(key-value pairs) and accessing the value by index lookup.Closes #4470
-
New checker
consider-using-from-import
. Emitted when a submodule/member of a package is imported and aliased
with the same name.Closes #2309
-
Allow comma-separated list in
output-format
and separate output files for
each specified format.Closes #1798
-
Make
using-constant-test
detect constant tests consisting of list literals like[]
and
[1, 2, 3]
. -
Improved error message of
unnecessary-comprehension
checker by providing code suggestion.Closes #4499
-
New checker
unused-private-member
. Emitted when a private member (i.e., starts with__
) of a class
is defined but not used.Closes #4483
-
Fix false negative of
consider-using-enumerate
when iterating over an attribute.Closes #3657
-
New checker
invalid-class-object
. Emitted when a non-class is assigned to a__class__
attribute.Closes #585
-
Fix a crash when a plugin from the configuration could not be loaded and raise an error
'bad-plugin-value' insteadCloses #4555
-
Added handling of floating point values when parsing configuration from pyproject.toml
Closes #4518
-
invalid-length-returned
, now also works when nothing at all is returned
following an upgrade in astroid. -
logging-format-interpolation
andlogging-not-lazy
, now works on logger
class created from renamed logging import following an upgrade in astroid. -
Fix false-positive
no-member
with generic base classCloses pylint-dev/astroid#942
-
Fix
assigning-non-slot
false-positive with base that inherits fromtyping.Generic
Closes #4509
Closes pylint-dev/astroid#999 -
New checker
invalid-all-format
. Emitted when__all__
has an invalid format,
i.e. isn't atuple
orlist
. -
Fix false positive
unused-variable
andundefined-variable
with
Pattern Matching in Python 3.10 -
New checker
await-outside-async
. Emitted when await is used outside an async function. -
Clarify documentation for
typing
extension.Closes #4545
-
Add new extension
CodeStyleChecker
. It includes checkers that can improve code
consistency. As such they don't necessarily provide a performance benefit
and are often times opinionated. -
New checker
consider-using-tuple
. Emitted when an in-place defined
list or set can be replaced by a tuple. -
New checker
consider-using-namedtuple-or-dataclass
. Emitted when dictionary values
can be replaced by namedtuples or dataclass instances. -
Fix error that occurred when using
slice
as subscript for dict. -
Reduce false-positives around inference of
.value
and.name
properties onEnum
subclasses, following an upgrade in astroid -
Fix issue with
cached_property
that causedinvalid-overridden-method
error
when overriding aproperty
.Closes #4023
-
Fix
unused-import
false positive for imported modules referenced in
attribute lookups in type comments.Closes #4603
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