Skip to content

Releases: pylint-dev/pylint

v3.0.0-a4

29 Jun 19:53
Compare
Choose a tag to compare
v3.0.0-a4 Pre-release
Pre-release
  • This is 2.9.0 with the breaking changes of the future version 3.0.

  • Fix the score option not being honored when exporting to JSON

    The default setting was to have a score, but it did not work. Now it will give a score at the end of the json:

    Close #3504

v2.9.0

29 Jun 19:15
Compare
Choose a tag to compare
  • 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 using pylint.extensions.docparams
    when a function was typed using pep484 but not inside the docstring.

    Closes #4117
    Closes #4593

  • setuptools_scm has been removed and replaced by tbump 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 using open without with.

    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 like open() 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 the collections.abc module

    Closes #4166
    Closes #4415

  • 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 behind if sys.version_info >= (x, x)

  • Fix incompatibility with Python 3.6.0 caused by typing.Counter and typing.NoReturn usage

    Closes #4412

  • New checker use-maxsplit-arg. Emitted either when accessing only the first or last
    element of str.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 checkerconsider-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' instead

    Closes #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 and logging-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 class

    Closes pylint-dev/astroid#942

  • Fix assigning-non-slot false-positive with base that inherits from typing.Generic

    Closes #4509
    Closes pylint-dev/astroid#999

  • New checker invalid-all-format. Emitted when __all__ has an invalid format,
    i.e. isn't a tuple or list.

  • Fix false positive unused-variable and undefined-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 on Enum subclasses, following an upgrade in astroid

    Closes #1932
    Closes #2062

  • Fix issue with cached_property that caused invalid-overridden-method error
    when overriding a property.

    Closes #4023

  • Fix unused-import false positive for imported modules referenced in
    attribute lookups in type comments.

    Closes #4603

v2.8.3

31 May 19:04
Compare
Choose a tag to compare

Pin astroid to 2.5.6 for pylint 2.8.3

v2.8.2

26 Apr 16:00
Compare
Choose a tag to compare
  • Keep __pkginfo__.numversion a tuple to avoid breaking pylint-django.

    Closes #4405

  • scm_setuptools has been added to the packaging.

  • Pylint's tags are now the standard form vX.Y.Z and not pylint-X.Y.Z anymore.

pylint-2.8.1

25 Apr 10:05
Compare
Choose a tag to compare
  • Add numversion back (temporarily) in __pkginfo__ because it broke Pylama and revert the unnecessary
    pylint.version breaking change.

    Closes #4399

pylint-2.8.0

24 Apr 19:47
Compare
Choose a tag to compare
  • New refactoring message consider-using-with. This message is emitted if resource-allocating functions or methods of the
    standard library (like open() or threading.Lock.acquire()) that can be used as a context manager are called without
    a with 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 (R5601 confusing-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 and Changelog 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 with pylint.__version__), other meta-information are still
    accessible with import 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

    Closes #2822, #4206, #4284

  • Add consider-using-min-max-builtin check for if statement which could be replaced by Python builtin min or max

    Closes #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 that assert 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.

    Closes #4122, #4188

  • 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 there

    Closes #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)

30 Mar 07:30
c92e3ab
Compare
Choose a tag to compare
  • Fix a problem with disabled msgid not being ignored

    Closes #4265

  • Fix issue with annotated class constants

pylint-2.7.3

29 Mar 19:41
13dae7c
Compare
Choose a tag to compare
  • Introduce logic for checking deprecated attributes in DeprecationMixin.

  • Reduce usage of blacklist/whitelist terminology. Notably, extension-pkg-allow-list is an
    alternative to extension-pkg-whitelist and the message blacklisted-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 to 2.5.2

  • Fix false positive for method-hidden when using private attribute and method

    Closes #3936

  • use-symbolic-message-instead now also works on legacy messages like C0111 (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 tuning redefined-builtin check.

    Close #3263

  • Fix issue when executing with python -m pylint

    Closes #4161

  • Exempt typing.TypedDict from too-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
    with typing.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

    Closes #3763, #4238

  • Improve check if class is subscriptable PEP585

  • Fix documentation and filename handling of --import-graph

  • Fix false-positive for unused-import on class keyword arguments

    Closes #3202

  • Fix regression with plugins on PYTHONPATH if latter is cwd

    Closes #4252

pylint-2.7.2

28 Mar 19:36
Compare
Choose a tag to compare
  • Fix False Positive on Enum.__members__.items(), Enum.__members__.values, and Enum.__members__.keys
    Closes #4123

  • Properly strip dangerous sys.path entries (not just the first one)

    Closes #3636

pylint-2.7.1

28 Mar 19:35
Compare
Choose a tag to compare
  • Expose UnittestLinter in pylint.testutils

  • Don't check directories starting with '.' when using register_plugins

    Closes #4119