Path to this page:
Subject: CVS commit: pkgsrc/devel/py-pylint
From: Adam Ciarcinski
Date: 2022-04-20 12:51:28
Message id: 20220420105128.47251FB1A@cvs.NetBSD.org
Log Message:
py-pylint: updated to 2.13.6
What's New in Pylint 2.13.6?
============================
* Fix a crash in the ``unsupported-membership-test`` checker when assigning
multiple constants to class attributes including ``__iter__`` via unpacking.
* Asterisks are no longer required in Sphinx and Google style parameter documentation
for ``missing-param-doc`` and are parsed correctly.
* Fixed a false positive for ``unused-variable`` when a builtin specified in
``--additional-builtins`` is given a type annotation.
* Fixed an ``AstroidError`` in 2.13.0 raised by the ``duplicate-code`` checker with
``ignore-imports`` or ``ignore-signatures`` enabled.
What's New in Pylint 2.13.5?
============================
* Fix false positive regression in 2.13.0 for ``used-before-assignment`` for
homonyms between variable assignments in try/except blocks and variables in
subscripts in comprehensions.
* ``lru-cache-decorating-method`` has been renamed to ``cache-max-size-none`` and
will only be emitted when ``maxsize`` is ``None``.
* Fix false positive for ``unused-import`` when disabling both \
``used-before-assignment`` and ``undefined-variable``.
* Narrow the scope of the ``unnecessary-ellipsis`` checker to:
* functions & classes which contain both a docstring and an ellipsis.
* A body which contains an ellipsis ``nodes.Expr`` node & at least one \
other statement.
* Fix false positive for ``used-before-assignment`` for assignments taking place via
nonlocal declarations after an earlier type annotation.
* Fix crash for ``redefined-slots-in-subclass`` when the type of the slot is not \
a const or a string.
* Only raise ``not-callable`` when all the inferred values of a property are not \
callable.
* Fix a false negative for ``subclassed-final-class`` when a set of other \
messages were disabled.
What's New in Pylint 2.13.4?
============================
* Fix false positive regression in 2.13.0 for ``used-before-assignment`` for
homonyms between variable assignments in try/except blocks and variables in
a comprehension's filter.
* Include ``testing_pylintrc`` in source and wheel distributions.
* Fix crash in ``super-init-not-called`` checker when using ``ctypes.Union``.
* Fix crash for ``unneccessary-ellipsis`` checker when an ellipsis is used \
inside of a container or a lambda expression.
What's New in Pylint 2.13.3?
============================
* Fix false positive for ``unnecessary-ellipsis`` when using an ellipsis as a \
default argument.
* Fix crash involving unbalanced tuple unpacking.
* Fix false positive for 'nonexistent-operator' when repeated '-' are
separated (e.g. by parens).
What's New in Pylint 2.13.2?
============================
* Fix crash when subclassing a ``namedtuple``.
* Fix false positive for ``superfluous-parens`` for patterns like
"return (a or b) in iterable".
* Fix a false negative regression in 2.13.0 where ``protected-access`` was not
raised on functions.
* Better error messages in case of crash if pylint can't write the issue template.
What's New in Pylint 2.13.1?
============================
* Fix a regression in 2.13.0 where ``used-before-assignment`` was emitted for
the usage of a nonlocal in a try block.
* Avoid emitting ``raising-bad-type`` when there is inference ambiguity on
the variable being raised.
* Loosen TypeVar default name pattern a bit to allow names with multiple uppercase
characters. E.g. ``HVACModeT`` or ``IPAddressT``.
* Fixed false positive for ``unused-argument`` when a ``nonlocal`` name is used
in a nested function that is returned without being called by its parent.
* Fix program crash for ``modified_iterating-list/set/dict`` when the list/dict/set
being iterated through is a function call.
* Don't emit ``broken-noreturn`` and ``broken-collections-callable`` errors
inside ``if TYPE_CHECKING`` blocks.
What's New in Pylint 2.13.0?
============================
* Add missing dunder methods to ``unexpected-special-method-signature`` check.
* No longer emit ``no-member`` in for loops that reference ``self`` if the \
binary operation that
started the for loop uses a ``self`` that is encapsulated in tuples or lists.
* Output better error message if unsupported file formats are used with \
``pyreverse``.
* Fix pyreverse diagrams type hinting for classmethods and staticmethods.
* Fix pyreverse diagrams type hinting for methods returning None.
* Fix matching ``--notes`` options that end in a non-word character.
* Updated the position of messages for class and function defintions to no \
longer cover
the complete definition. Only the ``def`` or ``class`` + the name of the \
class/function
are covered.
* ``using-f-string-in-unsupported-version`` and \
``using-final-decorator-in-unsupported-version`` msgids
were renamed from ``W1601`` and ``W1602`` to ``W2601`` and ``W2602``. \
Disabling using these msgids will break.
This is done in order to restore consistency with the already existing \
msgids for ``apply-builtin`` and
``basestring-builtin`` from the now deleted python 3K+ checker. There is now \
a check that we're not using
existing msgids or symbols from deleted checkers.
* The line numbering for messages related to function arguments is now more \
accurate. This can
require some message disables to be relocated to updated positions.
* Add ``--recursive`` option to allow recursive discovery of all modules and \
packages in subtree. Running pylint with
``--recursive=y`` option will check all discovered ``.py`` files and packages \
found inside subtree of directory provided
as parameter to pylint.
* Add ``modified-iterating-list``, ``modified-iterating-dict`` and \
``modified-iterating-set``,
emitted when items are added to or removed from respectively a list, dictionary or
set being iterated through.
* Fix false-negative for ``assignment-from-none`` checker using list.sort() method.
* New extension ``import-private-name``: indicate imports of external private \
packages
and objects (prefixed with ``_``). It can be loaded using \
``load-plugins=pylint.extensions.private_import``.
* Fixed crash from ``arguments-differ`` and ``arguments-renamed`` when methods were
defined outside the top level of a class.
* Removed the deprecated ``check_docs`` extension. You can use the ``docparams`` \
checker
to get the checks previously included in ``check_docs``.
* Added a ``testutil`` extra require to the packaging, as ``gitpython`` should \
not be a dependency
all the time but is still required to use the primer helper code in \
``pylint.testutil``. You can
install it with ``pip install pylint[testutil]``.
* Reinstated checks from the python3 checker that are still useful for python 3
(``eq-without-hash``). This is now in the \
``pylint.extensions.eq_without_hash`` optional
extension.
* Fixed an issue where ``ungrouped-imports`` could not be disabled without raising
``useless-suppression``.
* Added several checkers to deal with unicode security issues
(see `Trojan Sources <https://trojansource.codes/>`_ and
`PEP 672 <https://peps.python.org/pep-0672/>`_ for details) that also
concern the readability of the code. In detail the following checks were added:
* ``bad-file-encoding`` checks that the file is encoded in UTF-8 as suggested by
`PEP8 <https://peps.python.org/pep-0008/#source-file-encoding>`_.
UTF-16 and UTF-32 are `not supported by Python \
<https://bugs.python.org/issue1503789>`_
at the moment. If this ever changes
``invalid-unicode-codec`` checks that they aren't used, to allow for backwards
compatibility.
* ``bidirectional-unicode`` checks for bidirectional unicode characters that
could make code execution different than what the user expects.
* ``invalid-character-backspace``, ``invalid-character-carriage-return``,
``invalid-character-sub``, ``invalid-character-esc``,
``invalid-character-zero-width-space`` and ``invalid-character-nul``
to check for possibly harmful unescaped characters.
* Use the ``tomli`` package instead of ``toml`` to parse ``.toml`` files.
* Fix false positive - Allow unpacking of ``self`` in a subclass of \
``typing.NamedTuple``.
* Fixed false negative ``unpacking-non-sequence`` when value is an empty list.
* Better warning messages for useless else or elif when a function returns early.
* Fixed false positive ``consider-using-dict-comprehension`` when creating a dict
using a list of tuples where key AND value vary depending on the same condition.
* Fixed false positive for ``global-variable-undefined`` when ``global`` is used \
with a class name
* Fixed false positive for ``unused-variable`` when a ``nonlocal`` name is \
assigned as part of a multi-name assignment.
* Fixed a crash in ``unspecified-encoding`` checker when providing ``None``
to the ``mode`` argument of an ``open()`` call.
* Fixed a crash involving a ``NewType`` named with an f-string.
* Improved ``bad-open-mode`` message when providing ``None`` to the ``mode``
argument of an ``open()`` call.
* Added ``lru-cache-decorating-method`` checker with checks for the use of \
``functools.lru_cache``
on class methods. This is unrecommended as it creates memory leaks by never \
letting the instance
getting garbage collected.
* Fixed crash with recursion error for inference of class attributes that referenced
the class itself.
* Fixed false positive for ``unused-argument`` when a method overridden in a subclass
does nothing with the value of a keyword-only argument.
* The issue template for crashes is now created for crashes which were \
previously not covered
by this mechanism.
* Rewrote checker for ``non-ascii-name``.
It now ensures __all__ Python names are ASCII and also properly
checks the names of imports (``non-ascii-module-import``) as
well as file names (``non-ascii-file-name``) and emits their respective new \
warnings.
Non ASCII characters could be homoglyphs (look alike characters) and hard to
enter on a non specialized keyboard.
See `Confusable Characters in PEP 672 \
<https://peps.python.org/pep-0672/#confusing-features>`_
* When run in parallel mode ``pylint`` now pickles the data passed to \
subprocesses with
the ``dill`` package. The ``dill`` package has therefore been added as a \
dependency.
* An astroid issue where symlinks were not being taken into account
was fixed
* Fix a crash in ``unused-private-member`` checker when analyzing code using
``type(self)`` in bound methods.
* Optimize parsing of long lines when ``missing-final-newline`` is enabled.
* Fix false positives for ``used-before-assignment`` from using named
expressions in a ternary operator test and using that expression as
a call argument.
* Fix false positive for ``undefined-variable`` when ``namedtuple`` class
attributes are used as return annotations.
* Fix false negative for ``undefined-variable`` and related variable messages
when the same undefined variable is used as a type annotation and is
accessed multiple times, or is used as a default argument to a function.
* Pyreverse - add output in mermaidjs format
* Emit ``used-before-assignment`` instead of ``undefined-variable`` when attempting
to access unused type annotations.
* Added confidence level ``CONTROL_FLOW`` for warnings relying on assumptions
about control flow.
* ``used-before-assignment`` now considers that assignments in a try block
may not have occurred when the except or finally blocks are executed.
* Fixed false negative for ``used-before-assignment`` when a conditional
or context manager intervened before the try statement that suggested
it might fail.
* Fixed false negative for ``used-before-assignment`` in finally blocks
if an except handler did not define the assignment that might have failed
in the try block.
* Fixed extremely long processing of long lines with comma's.
* Fixed crash on properties and inherited class methods when comparing them for
equality against an empty dict.
* Fixed a false positive for ``assigning-non-slot`` when the slotted class
defined ``__setattr__``.
* Fixed a false positive for ``invalid-class-object`` when the object
being assigned to the ``__class__`` attribute is uninferable.
* Fixed false positive for ``used-before-assignment`` with self-referential type
annotation in conditional statements within class methods.
* Add checker ``redefined-slots-in-subclass``: Emitted when a slot is redefined \
in a subclass.
* Fixed false positive for ``global-variable-not-assigned`` when the ``del`` \
statement is used
* By default, pylint does no longer take files starting with ``.#`` into \
account. Those are
considered `emacs file locks`. See
https://www.gnu.org/software/emacs/manual/html_node/elisp/File-Locks.html.
This behavior can be reverted by redefining the ``ignore-patterns`` option.
* Fixed a false positive for ``used-before-assignment`` when a named expression
appears as the first value in a container.
* ``used-before-assignment`` now assumes that assignments in except blocks
may not have occurred and warns accordingly.
* When evaluating statements after an except block, ``used-before-assignment``
assumes that assignments in the except blocks took place if the
corresponding try block contained a return statement.
* Fixed a false negative for ``used-before-assignment`` when some but not all
except handlers defined a name relied upon after an except block when the
corresponding try block contained a return statement.
* When evaluating statements in the ``else`` clause of a loop, \
``used-before-assignment``
assumes that assignments in the except blocks took place if the
except handlers constituted the only ways for the loop to finish without
breaking early.
* ``used-before-assignment`` now checks names in try blocks.
* Fixed false positive with ``used-before-assignment`` for assignment expressions
in lambda statements.
* Fixed a false positive (affecting unreleased development) for
``used-before-assignment`` involving homonyms between filtered comprehensions
and assignments in except blocks.
* Fixed crash with slots assignments and annotated assignments.
* Fixed crash on list comprehensions that used ``type`` as inner variable name.
* Fixed crash in ``use-maxsplit-arg`` checker when providing the ``sep`` argument
to ``str.split()`` by keyword.
* Fix false positive for ``unused-variable`` for a comprehension variable matching
an outer scope type annotation.
* Fix false negative for ``undefined-variable`` for a variable used multiple times
in a comprehension matching an unused outer scope type annotation.
* Some files in ``pylint.testutils`` were deprecated. In the future imports \
should be done from the
``pylint.testutils.functional`` namespace directly.
* Fixed false positives for ``no-value-for-parameter`` with variadic
positional arguments.
* ``safe_infer`` no longer makes an inference when given two function
definitions with differing numbers of arguments.
* Fix ``comparison-with-callable`` false positive for callables that raise, such
as typing constants.
* Fixed a crash on ``__init__`` nodes when the attribute was previously \
uninferable due to a cache
limit size. This limit can be hit when the inheritance pattern of a class (and \
therefore of the ``__init__`` attribute) is very large.
* Fix false positive for ``used-before-assignment`` from a class definition
nested under a function subclassing a class defined outside the function.
* Fix ``unnecessary_dict_index_lookup`` false positive when deleting a \
dictionary's entry.
* Fix false positive for ``used-before-assignment`` when an except handler
shares a name with a test in a filtered comprehension.
* Fix crash in ``unnecessary-dict-index-lookup`` checker if the output of
``items()`` is assigned to a 1-tuple.
* When invoking ``pylint``, ``epylint``, ``symilar`` or ``pyreverse`` by \
importing them in a python file
you can now pass an ``argv`` keyword besides patching ``sys.argv``.
* The ``PyLinter`` class will now be initialized with a ``TextReporter``
as its reporter if none is provided.
* Fix ``super-init-not-called`` when parent or ``self`` is a ``Protocol``
* Fix false positive ``not-callable`` with attributes that alias ``NamedTuple``
* Emit ``redefined-outer-name`` when a nested except handler shadows an outer one.
* Fix false positive ``super-init-not-called`` for classes that inherit their \
``init`` from
a parent.
* ``encoding`` can now be supplied as a positional argument to calls that open
files without triggering ``unspecified-encoding``.
* Fatal errors now emit a score of 0.0 regardless of whether the linted module
contained any statements
* ``fatal`` was added to the variables permitted in score evaluation expressions.
* The default score evaluation now uses a floor of 0.
* Fix false negative for ``consider-iterating-dictionary`` during membership \
checks encapsulated in iterables
or ``not in`` checks
* Fixed crash on uninferable decorators on Python 3.6 and 3.7
* Add checker ``unnecessary-ellipsis``: Emitted when the ellipsis constant is \
used unnecessarily.
* Disable checker ``bad-docstring-quotes`` for Python <= 3.7, because in \
these versions the line
numbers for decorated functions and classes are not reliable which interferes \
with the checker.
* Fixed incorrect classification of Numpy-style docstring as Google-style \
docstring for
docstrings with property setter documentation.
Docstring classification is now based on the highest amount of matched \
sections instead
of the order in which the docstring styles were tried.
* Fixed detection of ``arguments-differ`` when superclass static
methods lacked a ``@staticmethod`` decorator.
* ``TypingChecker``
* Added new check ``broken-noreturn`` to detect broken uses of ``typing.NoReturn``
if ``py-version`` is set to Python ``3.7.1`` or below.
https://bugs.python.org/issue34921
* Added new check ``broken-collections-callable`` to detect broken uses of \
``collections.abc.Callable``
if ``py-version`` is set to Python ``3.9.1`` or below.
https://bugs.python.org/issue42965
* The ``testutils`` for unittests now accept ``end_lineno`` and ``end_column``. Tests
without these will trigger a ``DeprecationWarning``.
* ``arguments-differ`` will no longer complain about method redefinitions with \
extra parameters
that have default values.
* Fixed false positive ``unexpected-keyword-arg`` for decorators.
* Importing the deprecated stdlib module ``xml.etree.cElementTree`` now emits \
``deprecated_module``.
* Disables for ``deprecated-module`` and similar warnings for stdlib features \
deprecated
in newer versions of Python no longer raise ``useless-suppression`` when \
linting with
older Python interpreters where those features are not yet deprecated.
* Importing the deprecated stdlib module ``distutils`` now emits \
``deprecated_module`` on Python 3.10+.
* ``missing-raises-doc`` will now check the class hierarchy of the raised exceptions
.. code-block:: python
def my_function()
"""My function.
Raises:
Exception: if something fails
"""
raise ValueError
* Allow disabling ``duplicate-code`` with a disable comment when running through
pylint.
* Improve ``invalid-name`` check for ``TypeVar`` names.
The accepted pattern can be customized with ``--typevar-rgx``.
* Added new checker ``typevar-name-missing-variance``. Emitted when a covariant
or contravariant ``TypeVar`` does not end with ``_co`` or ``_contra`` \
respectively or
when a ``TypeVar`` is not either but has a suffix.
* Allow usage of mccabe 0.7.x release
* Fix ``unused-private-member`` false positive when accessing private methods \
through ``property``.
Files: