mirror of
https://fuchsia.googlesource.com/third_party/github.com/pylint-dev/pylint
synced 2024-09-21 16:19:21 +00:00
4bf6f03c84
The implementation successfully warns against the most obvious cases where named variables are supplied to a function that all match a function's positional argument, but are in the wrong order. There are some additional corner cases that need to be addresses, such as call sites that are not typical function calls. Added additional checking for the presence of `self` arguments when calling instance attributes. Refactored the check into its own function so that we can bail out cleanly with a return if needed. Close #2975
189 lines
5.4 KiB
ReStructuredText
189 lines
5.4 KiB
ReStructuredText
**************************
|
|
What's New in Pylint 2.4
|
|
**************************
|
|
|
|
:Release: 2.4
|
|
:Date: TBA
|
|
|
|
|
|
Summary -- Release highlights
|
|
=============================
|
|
|
|
|
|
New checkers
|
|
============
|
|
|
|
* Added a new check, ``arguments-out-of-order``
|
|
|
|
This check warns if you have arguments with names that match those in
|
|
a function's signature but you are passing them in to the function
|
|
in a different order.
|
|
|
|
Close #2975
|
|
|
|
* Added `unnecessary-comprehension` that detects unnecessary comprehensions.
|
|
|
|
This check is emitted when ``pylint`` finds list-, set- or dict-comprehensions,
|
|
that are unnecessary and can be rewritten with the list-, set- or dict-constructors.
|
|
|
|
Close #2905
|
|
|
|
* Added a new check, ``invalid-overridden-method``
|
|
|
|
This check is emitted when we detect that a method is overridden
|
|
as a property or a property is overridden as a method. This can indicate
|
|
a bug in the application code that will trigger a runtime error.
|
|
|
|
Close #2670
|
|
|
|
* Added a new check, ``redeclared-assigned-name``
|
|
|
|
This check is emitted when ``pylint`` detects that a name was assigned one or multiple times in the same assignment,
|
|
which indicate a potential bug.
|
|
|
|
Close #2898
|
|
|
|
* Added a new check, ``self-assigning-variable``
|
|
|
|
This check is emitted when we detect that a variable is assigned
|
|
to itself, which might indicate a potential bug in the code application.
|
|
|
|
For example, the following would raise this warning::
|
|
|
|
def new_a(attr, attr2):
|
|
a_inst = Aclass()
|
|
a_inst.attr2 = attr2
|
|
# should be: a_inst.attr = attr, but have a typo
|
|
attr = attr
|
|
return a_inst
|
|
|
|
Close #2930
|
|
|
|
* Added a new check ``property-with-parameters`` which detects when a property
|
|
has more than a single argument.
|
|
|
|
Close #3006
|
|
|
|
* Added `subprocess-run-check` to handle subprocess.run without explicitly set `check` keyword.
|
|
|
|
Close #2848
|
|
|
|
* We added a new check message ``dict-iter-missing-items``.
|
|
This is emitted when trying to iterate through a dict in a for loop without calling its .items() method.
|
|
|
|
Closes #2761
|
|
|
|
* We added a new check message ``missing-parentheses-for-call-in-test``.
|
|
This is emitted in case a call to a function is made inside a test but
|
|
it misses parentheses.
|
|
|
|
* A new check ``class-variable-slots-conflict`` was added.
|
|
|
|
This check is emitted when ``pylint`` finds a class variable that conflicts with a slot
|
|
name, which would raise a ``ValueError`` at runtime.
|
|
|
|
For example, the following would raise an error::
|
|
|
|
class A:
|
|
__slots__ = ('first', 'second')
|
|
first = 1
|
|
|
|
* A new check ``preferred-module`` was added.
|
|
|
|
This check is emitted when ``pylint`` finds an imported module that has a
|
|
preferred replacement listed in ``preferred-modules``.
|
|
|
|
For example, you can set the preferred modules as ``xml:defusedxml,json:ujson``
|
|
to make ``pylint`` suggest using ``defusedxml`` instead of ``xml``
|
|
and ``ujson`` rather than ``json``.
|
|
|
|
* A new extension ``broad_try_clause`` was added.
|
|
|
|
This extension enforces a configurable maximum number of statements inside
|
|
of a try clause. This facilitates enforcing PEP 8's guidelines about try / except
|
|
statements and the amount of code in the try clause.
|
|
|
|
You can enable this extension using ``--load-plugins=pylint.extensions.broad_try_clause``
|
|
and you can configure the amount of statements in a try statement using
|
|
``--max-try-statements``.
|
|
|
|
|
|
Other Changes
|
|
=============
|
|
|
|
* Don't emit ``protected-access`` when a single underscore prefixed attribute is used
|
|
inside a special method
|
|
|
|
Close #1802
|
|
|
|
* ``len-as-condition`` now only fires when a ``len(x)`` call is made without an explicit comparison.
|
|
|
|
The message and description accompanying this checker has been changed
|
|
reflect this new behavior, by explicitly asking to either rely on the
|
|
fact that empty sequence are false or to compare the length with a scalar.
|
|
|
|
OK::
|
|
|
|
if len(x) == 0:
|
|
pass
|
|
|
|
while not len(x) == 0:
|
|
pass
|
|
|
|
assert len(x) > 5, message
|
|
|
|
KO::
|
|
|
|
if not len(x):
|
|
pass
|
|
|
|
while len(x) and other_cond:
|
|
pass
|
|
|
|
assert len(x), message
|
|
|
|
* A file is now read from stdin if the ``--from-stdin`` flag is used on the
|
|
command line. In addition to the ``--from-stdin`` flag a (single) file
|
|
name needs to be specified on the command line, which is needed for the
|
|
report.
|
|
|
|
* The checker for ungrouped imports is now more permissive.
|
|
|
|
The import can now be sorted alphabetically by import style.
|
|
This makes pylint compatible with isort.
|
|
|
|
The following imports do not trigger an ``ungrouped-imports`` anymore ::
|
|
|
|
import unittest
|
|
import zipfile
|
|
from unittest import TestCase
|
|
from unittest.mock import MagicMock
|
|
|
|
* The checker for missing return documentation is now more flexible.
|
|
|
|
The following does not trigger a ``missing-return-doc`` anymore ::
|
|
|
|
def my_func(self):
|
|
"""This is a docstring.
|
|
|
|
Returns
|
|
-------
|
|
:obj:`list` of :obj:`str`
|
|
List of strings
|
|
"""
|
|
return ["hi", "bye"] #@
|
|
|
|
* ``signature-mutators`` CLI and config option was added.
|
|
|
|
With this option, users can choose to ignore `too-many-function-args`, `unexpected-keyword-arg`,
|
|
and `no-value-for-parameter` for functions decorated with decorators that change
|
|
the signature of a decorated function.
|
|
|
|
For example a test may want to make use of hypothesis.
|
|
Adding `hypothesis.extra.numpy.arrays` to `signature_mutators`
|
|
would mean that `no-value-for-parameter` would not be raised for::
|
|
|
|
@given(img=arrays(dtype=np.float32, shape=(3, 3, 3, 3)))
|
|
def test_image(img):
|
|
...
|