pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/devel/py-pylint
Module Name: pkgsrc
Committed By: wiz
Date: Sun Oct 4 17:01:25 UTC 2026
Modified Files:
pkgsrc/devel/py-pylint: Makefile PLIST distinfo
Log Message:
py-pylint: update to 4.1.2.
4.1.2
False Positives Fixed
Fixed a false positive unbalanced-tuple-unpacking when unpacking a tuple
concatenation whose elements have several possible values.
Fixed by upgrading astroid to 4.3.3.
Closes #2621
Other Bug Fixes
Fixed a crash when calling __bases__ on a class.
Fixed by upgrading astroid to 4.3.3.
Closes #11491
Fix a crash (astroid-error) when the class of a called attribute cannot
be fully inferred, for example when the attribute is used as a with
statement target or inside a comprehension.
Closes #11492
Fix a crash when a name bound by a type statement (a TypeVar) is used in a with statement.
Closes #11510
Fixed a crash (TypeError) in the variables checker when checking a class
whose metaclass name binding has no line number, for example a class defined
with metaclass=__annotations__.
Closes #11511
Fix a crash in the using-final-decorator-in-unsupported-version check
when import final is used.
Closes #11521
Fix a crash when a plugin passes confidence=None to add_message, as
pylint-pytest does, for a message that is disabled. confidence=None is
accepted again and means UNDEFINED, like in pylint 4.0. Passing it
explicitly to add_message, add_ignored_message or Message now emits a
DeprecationWarning: it will raise an error in pylint 5.0.
Closes #11530
4.1.1
Other Changes
Pylint 4.1.0 could not be uploaded to PyPI, because it required an unreleased
version of dill on Python 3.15, and PyPI refuses such a dependency. 4.1.1 is
the first 4.1 release available on PyPI, see the 4.1.0 changes below.
Refs #11495
4.1.0
Startup is about 25% faster thanks to lazy imports. The import checker caches
its isort configuration, which makes pylint about 17% faster on ansible.
Finding the files to lint with --recursive=y no longer walks ignored
directories such as .venv or node_modules, which took seconds on large
trees. The duplicate-code checker and symilar also received optimizations
that result in considerable performance improvements and memory use reduction
on larger codebases. For example, pandas analysis went from 20 min to 55 s and
pylint does not get OOM-killed when analyzing cpython anymore.
Python 3.15 support progresses: the unpacking in comprehensions added by
PEP 798 no longer raises false positives, and the standard library
deprecations of Python 3.15 are followed.
For CI, there is a new built-in junit output format
(--output-format=junit), the NO_COLOR and FORCE_COLOR environment
variables are respected, and the files to lint can now be set with the
files option in the configuration file.
New checks: looping-through-iterator, impossible-comparison,
chained-comparison-all-equal and
using-comprehension-unpacking-in-unsupported-version.
Running with --jobs no longer duplicates the messages of extensions or
ignores extensions enabled in the configuration.
Plugin authors: the confidence parameter can no longer be None, except
in is_message_enabled, and the MSG_STATE_* constants are deprecated in
favor of the MessageDisableReason enum.
The required astroid version is now 4.3.2. See the astroid changelog for additional fixes, features, and performance improvements applicable to pylint.
Breaking Changes
The confidence parameter is no longer nullable on any APIs except for
is_message_enabled (where confidence=None means "don't filter by
confidence"). The default became interfaces.UNDEFINED (an immutable value);
the behavior is unchanged unless you were passing an explicit None. This
avoids a runtime check in multiple function to set the default value conditionally.
The constants.MSG_STATE_* integer were replaced by a MessageDisableReason enum.
The old names remain as deprecated aliases pointing at the enum members.
MessageDisableReason is an IntEnum so existing code comparing the return of
_get_message_state_scope to the literal 0 / 1 / 2 keeps working.
Refs #11018
New Features
Add support for ignore-pattern-in-long-lines to allow ignoring specific parts of a line when checking line length.
Refs #3352
Support for the NO_COLOR and FORCE_COLOR environment variables has been added.
When running pylint, the reporter that writes to stdout is switched between text
and colorized according to the requested mode.
The order is: NO_COLOR > FORCE_COLOR > --output-format=....
Closes #3995
The dict-init-mutate message now includes a suggested dictionary literal showing how to combine the initialization and subsequent mutations into a single statement.
Closes #7819
Add a built-in junit output format (--output-format=junit) that produces JUnit-compatible XML output for CI/CD integration with Jenkins, Azure DevOps, GitLab CI, and GitHub Actions.
Closes #9143
Trailing pragmas understood by other common tooling (# type: ignore,
# pyright: ignore, # noqa, # pragma: no cover and
# pragma: no branch) are no longer counted toward the line length, so a line
is not flagged as line-too-long solely because of such a pragma. This mirrors
the existing behaviour for Pylint's own # pylint: pragmas.
Closes #10172
pyreverse: add --no-signatures to show method names without parameter lists or return type annotations in class diagrams.
Closes #10772
Add support for --known-first-party similar to --known-third-party.
Refs #10803
New Checks
Added a new checker looping-through-iterator (W4801) to detect when an iterator from an outer scope is consumed in a nested loop, which can lead to the iterator being unexpectedly exhausted.
Refs #2996
Add new checks impossible-comparison and chained-comparison-all-equal.
impossible-comparison flags boolean conditions whose chain of numeric
comparisons is logically contradictory and can never be true (for example
a > b and b > a). chained-comparison-all-equal flags boolean conditions
whose operands form a cycle of weak inequalities (<= or >=) and can be
simplified to a chain of equalities (for example a >= b and b >= a is
equivalent to a == b).
Closes #5814
Add using-comprehension-unpacking-in-unsupported-version (W2607), emitted when
the code uses the unpacking in comprehensions added by PEP 798 while
py-version still includes a Python version that cannot compile it.
Refs #10982
False Positives Fixed
Fix a false positive for unnecessary-negation (C0117) when negating a
comparison between dict views (dict.keys()/dict.items()), which like
set/frozenset support only a partial (subset/superset) ordering, so
not a.items() <= b.items() is not equivalent to a.items() > b.items().
Closes #3668
Fix false positives for attribute-defined-outside-init where __init__
(etc.) uses a helper method to create attributes.
Closes #5214
Fix a false positive for consider-using-generator and use-a-generator
with an asynchronous list comprehension. Turning it into a generator expression
would create an asynchronous generator, which those functions cannot consume.
Closes #7271
Fixed a false positive assigning-non-slot when assigning to an inherited
descriptor through an instance returned by a method annotated with the
subclass. This regressed in pylint 3.0.0.
Fixed by upgrading astroid to 4.1.0.
Closes #8053
Fixed a false positive no-member when a classmethod annotated with
typing.Self is overridden in a subclass and its result is used directly,
as in Subclass.build().only_on_subclass(). The return type is now narrowed
to the subclass rather than the base class. This regressed in pylint 3.0.0.
Fixed by upgrading astroid to 4.1.0.
Closes #9159
Avoid emitting deprecated-class for imports inside a recognized
sys.version_info guard.
Closes #9533
Fix a false positive for inconsistent-return-statements when an instance
method annotated with NoReturn (or Never) is called via the class
rather than an instance (e.g. MyClass.raise_method(obj)). The unbound
method form is now recognised as never returning, matching the existing
behaviour for the bound-method form.
Closes #9692
Fix used-before-assignment false positive for names bound in only some arms of an if/elif/else chain.
Closes #9879
Fix a false positive for useless-parent-delegation when a method overrides a
method of a C-level parent whose signature cannot be inspected, such as
Exception.__init__. Because Exception.__init__ accepts *args, an
override taking only self narrows the accepted arguments and is not useless.
Overrides of object.__init__ are still reported.
Closes #9994
Fixed a false positive no-name-in-module when a module is imported with
an alias that shadows its base module and a function named format is
called on the alias.
Fixed by upgrading astroid to 4.3.1.
Closes #10193
Fixed a false positive unsubscriptable-object on instances of a generic class defining __class_getitem__.
Closes #10360
Fixed a false positive unexpected-keyword-argument when passing dtype
to numpy.concatenate().
Fixed by upgrading astroid to 4.3.1.
Closes #10548
Fix a false positive for unexpected-keyword-arg for dataclasses
using generic type aliases (PEP 695).
Closes #10703
Fix false positive unreachable when calling a function with @overload where one signature returns NoReturn.
Closes #10785
Fix a false positive for too-many-function-args for dataclasses
using generic type aliases (PEP 695).
Closes #10788
Fix a false positive relative-beyond-top-level error when linting specific files in namespace packages in parallel mode by augmenting sys.path before loading plugins and expanding files
consistently for parallel workers.
Closes #10794
Fix # pylint: enable inside a try block leaking into the except
handler. For example in the following code, no-member is no longer
incorrectly re-enabled in the except block:
class Basket:
# pylint: disable=no-member
def pick(self):
try:
# pylint: enable=no-member
print(self.apple) # no-member emitted here
except KeyError:
print(self.banana) # no-member NOT emitted here (correct)
Requires astroid 4.2.
Refs #10933
Fix false positives for the Python 3.15 syntax added by PEP 798, unpacking in
comprehensions:
star-needs-assignment-target (E0114) was emitted for the unpacked element
of a comprehension, e.g. [*sub for sub in lists].
consider-using-dict-comprehension (R1717) was emitted for
dict([*pairs for pairs in nested]), which flattens its argument and is
therefore not equivalent to a key/value dict comprehension.
4.0.10
False Positives Fixed
Fix false positives for :ref:unnecessary-lambda when a variable referenced in
the called expression is assigned, reassigned, or deleted later in the same scope.
Closes #8192
Fix a false positive for unused-argument in dataclass __new__ methods
when the arguments are consumed by a generated __init__ method.
Closes #9843
Fix a false positive for missing-kwoa when keyword-only arguments are passed
through a **kwargs dictionary that is not a literal at the call site, for
example one filled with options["key"] = value after its creation.
Closes #10029
ungrouped-imports no longer reports imports inside mutually exclusive
OS guard branches (if os.name == "nt": / if sys.platform == "win32":),
matching the existing behavior for sys.version_info guards.
Closes #10460
Other Bug Fixes
A TypeError crash could occur when checking a for loop that
iterates over a subscript with non-numeric constant bounds or a zero
step, e.g. for a, b in {"k": [][0: ""]}.values():.
Closes #11472
Fix a crash (AttributeError: 'ClassDef' object has no attribute 'expr') in the
import-private-name extension when an annotated assignment's value is an
attribute access on a call rooted at a non-Name node, e.g. x: str = ''().a.
Closes #11479
To generate a diff of this commit:
cvs rdiff -u -r1.123 -r1.124 pkgsrc/devel/py-pylint/Makefile
cvs rdiff -u -r1.37 -r1.38 pkgsrc/devel/py-pylint/PLIST
cvs rdiff -u -r1.108 -r1.109 pkgsrc/devel/py-pylint/distinfo
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/devel/py-pylint/Makefile
diff -u pkgsrc/devel/py-pylint/Makefile:1.123 pkgsrc/devel/py-pylint/Makefile:1.124
--- pkgsrc/devel/py-pylint/Makefile:1.123 Thu Sep 24 11:11:17 2026
+++ pkgsrc/devel/py-pylint/Makefile Sun Oct 4 17:01:25 2026
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.123 2026/09/24 11:11:17 adam Exp $
+# $NetBSD: Makefile,v 1.124 2026/10/04 17:01:25 wiz Exp $
#
# Changes: https://github.com/pylint-dev/pylint/releases
-DISTNAME= pylint-4.0.9
+DISTNAME= pylint-4.1.2
PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
CATEGORIES= devel python
MASTER_SITES= ${MASTER_SITE_PYPI:=p/pylint/}
@@ -21,15 +21,17 @@ DEPENDS+= ${PYPKGPREFIX}-platformdirs>=2
DEPENDS+= ${PYPKGPREFIX}-tomlkit>=0.10.1:../../textproc/py-tomlkit
TEST_DEPENDS+= ${PYPKGPREFIX}-gitpython>=3:../../devel/py-gitpython
TEST_DEPENDS+= ${PYPKGPREFIX}-test-benchmark>=0:../../devel/py-test-benchmark
+TEST_DEPENDS+= ${PYPKGPREFIX}-test-remaster>=0:../../devel/py-test-remaster
USE_LANGUAGES= # none
PY_RENAME_BINARIES= pylint pylint-config pyreverse symilar
-# as of 4.0.6
-# 25 failed, 1998 passed, 261 skipped, 5 xfailed
+# as of 4.1.2
+# 13 failed, 2250 passed, 315 skipped, 5 xfailed
.include "../../lang/python/pyversion.mk"
+
.if ${PYTHON_VERSION} < 311
DEPENDS+= ${PYPKGPREFIX}-tomli>=1.1:../../textproc/py-tomli
.endif
Index: pkgsrc/devel/py-pylint/PLIST
diff -u pkgsrc/devel/py-pylint/PLIST:1.37 pkgsrc/devel/py-pylint/PLIST:1.38
--- pkgsrc/devel/py-pylint/PLIST:1.37 Sun Oct 19 18:58:54 2025
+++ pkgsrc/devel/py-pylint/PLIST Sun Oct 4 17:01:25 2026
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.37 2025/10/19 18:58:54 wiz Exp $
+@comment $NetBSD: PLIST,v 1.38 2026/10/04 17:01:25 wiz Exp $
bin/pylint-${PYVERSSUFFIX}
bin/pylint-config-${PYVERSSUFFIX}
bin/pyreverse-${PYVERSSUFFIX}
@@ -103,6 +103,9 @@ ${PYSITELIB}/pylint/checkers/lambda_expr
${PYSITELIB}/pylint/checkers/logging.py
${PYSITELIB}/pylint/checkers/logging.pyc
${PYSITELIB}/pylint/checkers/logging.pyo
+${PYSITELIB}/pylint/checkers/looping_iterator_checker.py
+${PYSITELIB}/pylint/checkers/looping_iterator_checker.pyc
+${PYSITELIB}/pylint/checkers/looping_iterator_checker.pyo
${PYSITELIB}/pylint/checkers/match_statements_checker.py
${PYSITELIB}/pylint/checkers/match_statements_checker.pyc
${PYSITELIB}/pylint/checkers/match_statements_checker.pyo
@@ -392,6 +395,9 @@ ${PYSITELIB}/pylint/pyreverse/main.pyo
${PYSITELIB}/pylint/pyreverse/mermaidjs_printer.py
${PYSITELIB}/pylint/pyreverse/mermaidjs_printer.pyc
${PYSITELIB}/pylint/pyreverse/mermaidjs_printer.pyo
+${PYSITELIB}/pylint/pyreverse/node_info.py
+${PYSITELIB}/pylint/pyreverse/node_info.pyc
+${PYSITELIB}/pylint/pyreverse/node_info.pyo
${PYSITELIB}/pylint/pyreverse/plantuml_printer.py
${PYSITELIB}/pylint/pyreverse/plantuml_printer.pyc
${PYSITELIB}/pylint/pyreverse/plantuml_printer.pyo
@@ -419,6 +425,9 @@ ${PYSITELIB}/pylint/reporters/collecting
${PYSITELIB}/pylint/reporters/json_reporter.py
${PYSITELIB}/pylint/reporters/json_reporter.pyc
${PYSITELIB}/pylint/reporters/json_reporter.pyo
+${PYSITELIB}/pylint/reporters/junit_reporter.py
+${PYSITELIB}/pylint/reporters/junit_reporter.pyc
+${PYSITELIB}/pylint/reporters/junit_reporter.pyo
${PYSITELIB}/pylint/reporters/multi_reporter.py
${PYSITELIB}/pylint/reporters/multi_reporter.pyc
${PYSITELIB}/pylint/reporters/multi_reporter.pyo
@@ -449,6 +458,9 @@ ${PYSITELIB}/pylint/testutils/__init__.p
${PYSITELIB}/pylint/testutils/_primer/__init__.py
${PYSITELIB}/pylint/testutils/_primer/__init__.pyc
${PYSITELIB}/pylint/testutils/_primer/__init__.pyo
+${PYSITELIB}/pylint/testutils/_primer/comparator.py
+${PYSITELIB}/pylint/testutils/_primer/comparator.pyc
+${PYSITELIB}/pylint/testutils/_primer/comparator.pyo
${PYSITELIB}/pylint/testutils/_primer/package_to_lint.py
${PYSITELIB}/pylint/testutils/_primer/package_to_lint.pyc
${PYSITELIB}/pylint/testutils/_primer/package_to_lint.pyo
@@ -458,15 +470,36 @@ ${PYSITELIB}/pylint/testutils/_primer/pr
${PYSITELIB}/pylint/testutils/_primer/primer_command.py
${PYSITELIB}/pylint/testutils/_primer/primer_command.pyc
${PYSITELIB}/pylint/testutils/_primer/primer_command.pyo
+${PYSITELIB}/pylint/testutils/_primer/primer_comment.py
+${PYSITELIB}/pylint/testutils/_primer/primer_comment.pyc
+${PYSITELIB}/pylint/testutils/_primer/primer_comment.pyo
${PYSITELIB}/pylint/testutils/_primer/primer_compare_command.py
${PYSITELIB}/pylint/testutils/_primer/primer_compare_command.pyc
${PYSITELIB}/pylint/testutils/_primer/primer_compare_command.pyo
+${PYSITELIB}/pylint/testutils/_primer/primer_configuration.py
+${PYSITELIB}/pylint/testutils/_primer/primer_configuration.pyc
+${PYSITELIB}/pylint/testutils/_primer/primer_configuration.pyo
${PYSITELIB}/pylint/testutils/_primer/primer_prepare_command.py
${PYSITELIB}/pylint/testutils/_primer/primer_prepare_command.pyc
${PYSITELIB}/pylint/testutils/_primer/primer_prepare_command.pyo
${PYSITELIB}/pylint/testutils/_primer/primer_run_command.py
${PYSITELIB}/pylint/testutils/_primer/primer_run_command.pyc
${PYSITELIB}/pylint/testutils/_primer/primer_run_command.pyo
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer.py
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer.pyc
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer.pyo
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_command.py
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_command.pyc
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_command.pyo
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_compare_command.py
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_compare_command.pyc
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_compare_command.pyo
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_run_command.py
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_run_command.pyc
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_run_command.pyo
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_target.py
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_target.pyc
+${PYSITELIB}/pylint/testutils/_primer/pyreverse_primer_target.pyo
${PYSITELIB}/pylint/testutils/_run.py
${PYSITELIB}/pylint/testutils/_run.pyc
${PYSITELIB}/pylint/testutils/_run.pyo
Index: pkgsrc/devel/py-pylint/distinfo
diff -u pkgsrc/devel/py-pylint/distinfo:1.108 pkgsrc/devel/py-pylint/distinfo:1.109
--- pkgsrc/devel/py-pylint/distinfo:1.108 Thu Sep 24 11:11:17 2026
+++ pkgsrc/devel/py-pylint/distinfo Sun Oct 4 17:01:25 2026
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.108 2026/09/24 11:11:17 adam Exp $
+$NetBSD: distinfo,v 1.109 2026/10/04 17:01:25 wiz Exp $
-BLAKE2s (pylint-4.0.9.tar.gz) = d32fbe3595523f22622165301e2c19834e831b6f13f72132b96bec6763c10806
-SHA512 (pylint-4.0.9.tar.gz) = 499c7e5887b8b9781c7d051d7b332e4302477640433f344e6e99e35a1898266913ad74803958920ff884687929a9c2fa2ca1fee1cbdbbf5798520ddbebf8033c
-Size (pylint-4.0.9.tar.gz) = 1604187 bytes
+BLAKE2s (pylint-4.1.2.tar.gz) = 1248acb43fbd86fb172cd659b31f6b7db332add395eb0dca145136055c0bde40
+SHA512 (pylint-4.1.2.tar.gz) = 8f2fb385d0866865fe8ce7e5382586e1e5b4420544ab58773079c2387be4c6e93033f0f749a7972cce91faae9f957e3be397d695cab294f0752e4d1bc71f1c93
+Size (pylint-4.1.2.tar.gz) = 1739885 bytes
Home |
Main Index |
Thread Index |
Old Index