Pylint

Latest version: v3.1.0

Safety actively analyzes 627484 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 10 of 19

2.12.2

Not secure
* Fixed a false positive for ``unused-import`` where everything was not analyzed properly inside typing guards.

* Fixed a false-positive regression for ``used-before-assignment`` for
typed variables in the body of class methods that reference the same class

Closes 5342

* Specified that the ``ignore-paths`` option considers "\" to represent a
windows directory delimiter instead of a regular expression escape
character.

* Fixed a crash with the ``ignore-paths`` option when invoking the option
via the command line.

Closes 5437

* Fixed handling of Sphinx-style parameter docstrings with asterisks. These
should be escaped with by prepending a "\".

Closes 5406

* Add ``endLine`` and ``endColumn`` keys to output of ``JSONReporter``.

Closes 5380

* Fixed handling of Google-style parameter specifications where descriptions
are on the line following the parameter name. These were generating
false positives for ``missing-param-doc``.

Closes 5452

* Fix false negative for ``consider-iterating-dictionary`` during membership checks encapsulated in iterables
or ``not in`` checks

Closes 5323

* ``unused-import`` now check all ancestors for typing guards

Closes 5316

2.12.1

Not secure
* Require Python ``3.6.2`` to run pylint.

Closes 5065

2.12.0

Not secure
* Upgrade astroid to 2.9.0

Closes 4982

* Add ability to add ``end_line`` and ``end_column`` to the ``--msg-template`` option.
With the standard ``TextReporter`` this will add the line and column number of the
end of a node to the output of Pylint. If these numbers are unknown, they are represented
by an empty string.

* Introduced primer tests and a configuration tests framework. The helper classes available in
``pylint/testutil/`` are still unstable and might be modified in the near future.

Closes 4412 5287

* Fix ``install graphiz`` message which isn't needed for puml output format.

* ``MessageTest`` of the unittest ``testutil`` now requires the ``confidence`` attribute
to match the expected value. If none is provided it is set to ``UNDEFINED``.

* ``add_message`` of the unittest ``testutil`` now actually handles the ``col_offset`` parameter
and allows it to be checked against actual output in a test.

* Fix a crash in the ``check_elif`` extensions where an undetected if in a comprehension
with an if statement within a f-string resulted in an out of range error. The checker no
longer relies on counting if statements anymore and uses known if statements locations instead.
It should not crash on badly parsed if statements anymore.

* Fix ``simplify-boolean-expression`` when condition can be inferred as False.

Closes 5200

* Fix exception when pyreverse parses ``property function`` of a class.

* The functional ``testutils`` now accept ``end_lineno`` and ``end_column``. Expected
output files without these will trigger a ``DeprecationWarning``. Expected output files
can be easily updated with the ``python tests/test_functional.py --update-functional-output`` command.

* The functional ``testutils`` now correctly check the distinction betweeen ``HIGH`` and
``UNDEFINED`` confidence. Expected output files without defiend ``confidence`` levels will now
trigger a ``DeprecationWarning``. Expected output files can be easily updated with the
``python tests/test_functional.py --update-functional-output`` command.

* The functional test runner now supports the option ``min_pyver_end_position`` to control on which python
versions the ``end_lineno`` and ``end_column`` attributes should be checked. The default value is 3.8.

* Fix ``accept-no-yields-doc`` and ``accept-no-return-doc`` not allowing missing ``yield`` or
``return`` documentation when a docstring is partially correct

Closes 5223

* Add an optional extension ``consider-using-any-or-all`` : Emitted when a ``for`` loop only
produces a boolean and could be replaced by ``any`` or ``all`` using a generator. Also suggests
a suitable any or all statement.

Closes 5008

* Properly identify parameters with no documentation and add new message called ``missing-any-param-doc``

Closes 3799
* Add checkers ``overridden-final-method`` & ``subclassed-final-class``

Closes 3197

* Fixed ``protected-access`` for accessing of attributes and methods of inner classes

Closes 3066

* Added support for ``ModuleNotFoundError`` (``import-error`` and ``no-name-in-module``).
``ModuleNotFoundError`` inherits from ``ImportError`` and was added in Python ``3.6``

* ``undefined-variable`` now correctly flags variables which only receive a type annotations
and never get assigned a value

Closes 5140

* ``undefined-variable`` now correctly considers the line numbering and order of classes
used in metaclass declarations

Closes 4031

* ``used-before-assignment`` now correctly considers references to classes as type annotation
or default values in first-level methods

Closes 3771

* ``undefined-variable`` and ``unused-variable`` now correctly trigger for assignment expressions
in functions defaults

Fixes part of 3688

* ``undefined-variable`` now correctly triggers for assignment expressions in if ... else statements
This includes a basic form of control flow inference for if ... else statements using
constant boolean values

Closes 3688

* Added the ``--enable-all-extensions`` command line option. It will load all available extensions
which can be listed by running ``--list-extensions``

* Fix bug with importing namespace packages with relative imports

Closes 2967 and 5131

* Improve and flatten ``unused-wildcard-import`` message

Closes 3859

* In length checker, ``len-as-condition`` has been renamed as
``use-implicit-booleaness-not-len`` in order to be consistent with
``use-implicit-booleaness-not-comparison``.

* Created new ``UnsupportedVersionChecker`` checker class that includes checks for features
not supported by all versions indicated by a ``py-version``.

* Added ``using-f-string-in-unsupported-version`` checker. Issued when ``py-version``
is set to a version that does not support f-strings (< 3.6)

* Fix ``useless-super-delegation`` false positive when default keyword argument is a variable.

* Properly emit ``duplicate-key`` when Enum members are duplicate dictionary keys

Closes 5150

* Use ``py-version`` setting for alternative union syntax check (PEP 604),
instead of the Python interpreter version.

* Subclasses of ``dict`` are regarded as reversible by the ``bad-reversed-sequence`` checker
(Python 3.8 onwards).

Closes 4981

* Support configuring mixin class pattern via ``mixin-class-rgx``

* Added new checker ``use-implicit-booleaness-not-comparison``: Emitted when
collection literal comparison is being used to check for emptiness.

Closes 4774

* ``mising-param-doc`` now correctly parses asterisks for variable length and
keyword parameters

Closes 3733

* ``mising-param-doc`` now correctly handles Numpy parameter documentation without
explicit typing

Closes 5222

* ``pylint`` no longer crashes when checking assignment expressions within if-statements

Closes 5178

* Update ``literal-comparison checker to ignore tuple literals

Closes 3031

* Normalize the input to the ``ignore-paths`` option to allow both Posix and
Windows paths

Closes 5194

* Fix double emitting of ``not-callable`` on inferrable ``properties``

Closes 4426

* ``self-cls-assignment`` now also considers tuple assignment

* Fix ``missing-function-docstring`` not being able to check ``__init__`` and other
magic methods even if the ``no-docstring-rgx`` setting was set to do so

* Added ``using-final-decorator-in-unsupported-version`` checker. Issued when ``py-version``
is set to a version that does not support ``typing.final`` (< 3.8)

* Added configuration option ``exclude-too-few-public-methods`` to allow excluding
classes from the ``min-public-methods`` checker.

Closes 3370

* The ``--jobs`` parameter now fallbacks to 1 if the host operating system does not
have functioning shared semaphore implementation.

Closes 5216

* Fix crash for ``unused-private-member`` when checking private members on ``__class__``

Closes 5261

* Crashes when a list is encountered in a toml configuration do not happen anymore.

Closes 4580

* Moved ``misplaced-comparison-constant`` to its own extension ``comparison_placement``.
This checker was opinionated and now no longer a default. It can be reactived by adding
``pylint.extensions.comparison_placement`` to ``load-plugins`` in your config.

Closes 1064

* A new ``bad-configuration-section`` checker was added that will emit for misplaced option
in pylint's top level namespace for toml configuration. Top-level dictionaries or option defined
in the wrong section will still silently not be taken into account, which is tracked in a
follow-up issue.

Follow-up in 5259

* Fix crash for ``protected-access`` on (outer) class traversal

* Added new checker ``useless-with-lock`` to find incorrect usage of with statement and threading module locks.
Emitted when ``with threading.Lock():`` is used instead of ``with lock_instance:``.

Closes 5208

* Make yn validator case insensitive, to allow for ``True`` and ``False`` in config files.

* Fix crash on ``open()`` calls when the ``mode`` argument is not a simple string.

Partially closes 5321

* Inheriting from a class that implements ``__class_getitem__`` no longer raises ``inherit-non-class``.

* Pyreverse - Add the project root directory to sys.path

Closes 2479

* Don't emit ``consider-using-f-string`` if ``py-version`` is set to Python < ``3.6``.
``f-strings`` were added in Python ``3.6``

Closes 5019

* Fix regression for ``unspecified-encoding`` with ``pathlib.Path.read_text()``

Closes 5029

* Don't emit ``consider-using-f-string`` if the variables to be interpolated include a backslash

* Fixed false positive for ``cell-var-from-loop`` when variable is used as the default
value for a keyword-only parameter.

Closes 5012

* Fix false-positive ``undefined-variable`` with ``Lambda``, ``IfExp``, and
assignment expression.

* Fix false-positive ``useless-suppression`` for ``wrong-import-order``

Closes 2366

* Fixed ``toml`` dependency issue

Closes 5066

* Fix false-positive ``useless-suppression`` for ``line-too-long``

Closes 4212

* Fixed ``invalid-name`` not checking parameters of overwritten base ``object`` methods

Closes 3614

* Fixed crash in ``consider-using-f-string`` if ``format`` is not called

Closes 5058

* Fix crash with ``AssignAttr`` in ``if TYPE_CHECKING`` blocks.

Closes 5111

* Improve node information for ``invalid-name`` on function argument.

* Prevent return type checkers being called on functions with ellipses as body

Closes 4736

* Add ``is_sys_guard`` and ``is_typing_guard`` helper functions from astroid
to ``pylint.checkers.utils``.

* Fix regression on ClassDef inference

Closes 5030
Closes 5036

* Fix regression on Compare node inference

Closes 5048

* Fix false-positive ``isinstance-second-argument-not-valid-type`` with ``typing.Callable``.

Closes 3507
Closes 5087

* It is now recommended to do ``pylint`` development on ``Python`` 3.8 or higher. This
allows using the latest ``ast`` parser.

* All standard jobs in the ``pylint`` CI now run on ``Python`` 3.8 by default. We still
support python 3.6 and 3.7 and run tests for those interpreters.

* ``TypingChecker``

* Fix false-negative for ``deprecated-typing-alias`` and ``consider-using-alias``
with ``typing.Type`` + ``typing.Callable``.

2.11.1

Not secure
* ``unspecified-encoding`` now checks the encoding of ``pathlib.Path()`` correctly

Closes 5017

2.11.0

Not secure
* The python3 porting mode checker and it's ``py3k`` option were removed. You can still find it in older pylint
versions.

* ``raising-bad-type`` is now properly emitted when raising a string

* Added new extension ``SetMembershipChecker`` with ``use-set-for-membership`` check:
Emitted when using an in-place defined ``list`` or ``tuple`` to do a membership test. ``sets`` are better optimized for that.

Closes 4776


* Added ``py-version`` config key (if ``[MASTER]`` section). Used for version dependant checks.
Will default to whatever Python version pylint is executed with.

* ``CodeStyleChecker``

* Added ``consider-using-assignment-expr``: Emitted when an assignment is directly followed by an if statement
and both can be combined by using an assignment expression ``:=``. Requires Python 3.8

Closes 4862

* Added ``consider-using-f-string``: Emitted when .format() or '%' is being used to format a string.

Closes 3592

* Fix false positive for ``consider-using-with`` if a context manager is assigned to a
variable in different paths of control flow (e. g. if-else clause).

Closes 4751

* https is now prefered in the documentation and http://pylint.pycqa.org correctly redirect to https://pylint.pycqa.org

Closes 3802

* Fix false positive for ``function-redefined`` for simple type annotations

Closes 4936

* Fix false positive for ``protected-access`` if a protected member is used in type hints of function definitions

* Fix false positive ``dict-iter-missing-items`` for dictionaries only using tuples as keys

Closes 3282

* The ``unspecified-encoding`` checker now also checks calls to ``pathlib.Path().read_text()``
and ``pathlib.Path().write_text()``

Closes 4945

* Fix false positive ``superfluous-parens`` for tuples created with inner tuples

Closes 4907

* Fix false positive ``unused-private-member`` for accessing attributes in a class using ``cls``

Closes 4849

* Fix false positive ``unused-private-member`` for private staticmethods accessed in classmethods.

Closes 4849

* Extended ``consider-using-in`` check to work for attribute access.

* Setting ``min-similarity-lines`` to 0 now makes the similarty checker stop checking for duplicate code

Closes 4901

* Fix a bug where pylint complained if the cache's parent directory does not exist

Closes 4900

* The ``global-variable-not-assigned`` checker now catches global variables that are never reassigned in a
local scope and catches (reassigned) functions

Closes 1375
Closes 330

* Fix false positives for invalid-all-format that are lists or tuples at runtime

Closes 4711

* Fix ``no-self-use`` and ``docparams extension`` for async functions and methods.

* Add documentation for ``pyreverse`` and ``symilar``

Closes 4616

* Non symbolic messages with the wrong capitalisation now correctly trigger ``use-symbolic-message-instead``

Closes 5000

* The ``consider-iterating-dictionary`` checker now also considers membership checks

Closes 4069

* The ``invalid-name`` message is now more detailed when using multiple naming style regexes.

2.10.2

Not secure
* We now use platformdirs instead of appdirs since the latter is not maintained.

Closes 4886

* Fix a crash in the checker raising ``shallow-copy-environ`` when failing to infer
on ``copy.copy``

Closes 4891

Page 10 of 19

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.