Full changelog ============== What's New in Pylint 2.9.6? --------------------------- Release date: 2021-07-28 * Fix a false positive ``undefined-variable`` when variable name in decoration matches function argument Closes #3791 What's New in Pylint 2.9.5? --------------------------- Release date: 2021-07-21 * Fix a crash when there would be a 'TypeError object does not support item assignment' in the code we parse. Closes #4439 * Fix crash if a callable returning a context manager was assigned to a list or dict item Closes #4732 * Fix a crash when an AttributeInferenceError was not handled properly when failing to infer the real name of an import in astroid. Closes #4692 What's New in Pylint 2.9.4? --------------------------- Release date: 2021-07-20 * Added ``time.clock`` to deprecated functions/methods for python 3.3 * Fix bug in which --fail-on can return a zero exit code even when the specified issue is present Closes #4296 Closes #3363 * Fix hard failure when handling missing attribute in a class with duplicated bases Closes #4687 * Fix false-positive ``consider-using-with`` (R1732) if a ternary conditional is used together with ``with`` Closes #4676 * Fix false-positive ``deprecated-module`` when relative import uses deprecated module name. Closes #4629 * Fix false-positive ``consider-using-with`` (R1732) if ``contextlib.ExitStack`` takes care of calling the ``__exit__`` method Closes #4654 * Fix a false positive for ``unused-private-member`` when mutating a private attribute with ``cls`` Closes #4657 * Fix ignored empty functions by similarities checker with "ignore-signatures" option enabled Closes #4652 * Fix false-positive of ``use-maxsplit-arg`` when index is incremented in a loop Closes #4664 * Don't emit ``cyclic-import`` message if import is guarded by ``typing.TYPE_CHECKING``. Closes #3525 * Fix false-positive ``not-callable`` with alternative ``TypedDict`` syntax Closes #4715 * Clarify documentation for consider-using-from-import * Don't emit ``unreachable`` warning for empty generator functions Closes #4698 * Don't emit ``import-error``, ``no-name-in-module``, and ``ungrouped-imports`` for imports guarded by ``sys.version_info`` or ``typing.TYPE_CHECKING``. Closes #3285 Closes #3382 * Fix ``invalid-overridden-method`` with nested property Closes #4368 * Fix false-positive of ``unused-private-member`` when using ``__new__`` in a class Closes #4668 * No longer emit ``consider-using-with`` for ``ThreadPoolExecutor`` and ``ProcessPoolExecutor`` as they have legitimate use cases without a ``with`` block. Closes #4689 * Fix crash when inferring variables assigned in match patterns Closes #4685 * Fix a crash when a StopIteration was raised when inferring a faulty function in a context manager. Closes #4723 What's New in Pylint 2.9.3? --------------------------- Release date: 2021-07-01 * Fix a crash that happened when analysing empty function with docstring in the ``similarity`` checker. Closes #4648 * The ``similarity`` checker no longer add three trailing whitespaces for empty lines in its report. What's New in Pylint 2.9.2? --------------------------- Release date: 2021-07-01 * Fix a crash that happened when analysing code using ``type(self)`` to access a class attribute in the ``unused-private-member`` checker. Closes #4638 * Fix a false positive for ``unused-private-member`` when accessing a private variable with ``self`` Closes #4644 * Fix false-positive of ``unnecessary-dict-index-lookup`` and ``consider-using-dict-items`` for reassigned dict index lookups Closes #4630 What's New in Pylint 2.9.1? --------------------------- Release date: 2021-06-30 * Upgrade astroid to 2.6.2 Closes #4631 Closes #4633 What's New in Pylint 2.9.0? --------------------------- Release date: 2021-06-29 * 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. Closes #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 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' 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