Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pylint for openSUSE:Factory 
checked in at 2026-03-02 17:40:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pylint (Old)
 and      /work/SRC/openSUSE:Factory/.python-pylint.new.29461 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pylint"

Mon Mar  2 17:40:57 2026 rev:53 rq:1335775 version:4.0.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pylint/python-pylint.changes      
2026-01-26 12:34:39.530019815 +0100
+++ /work/SRC/openSUSE:Factory/.python-pylint.new.29461/python-pylint.changes   
2026-03-02 17:41:39.314647575 +0100
@@ -1,0 +2,20 @@
+Mon Mar  2 09:56:10 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 4.0.5:
+  * Fix possibly-used-before-assignment false positive when using
+    self.fail() in tests.
+  * Fixed false positive for ``logging-unsupported-format`` when
+    no arguments are provided to logging functions.
+  * According to Python's logging documentation, no formatting is
+    performed when no arguments are supplied, so strings like
+    ``logging.error("%test")`` are valid.
+  * Fix a false positive for ``invalid-name`` where a dataclass
+    field typed with ``Final`` was evaluated against the
+    ``class_const`` regex instead of the ``class_attribute`` regex.
+  * Avoid emitting `unspecified-encoding` (W1514) when `py-
+    version` is 3.15+.
+  * Fix `--known_third_party` config being ignored.
+  * Fixed dynamic color mapping for "fail-on" messages when using
+    multiple reporter/output formats.
+
+-------------------------------------------------------------------

Old:
----
  pylint-4.0.4-gh.tar.gz

New:
----
  pylint-4.0.5-gh.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pylint.spec ++++++
--- /var/tmp/diff_new_pack.VZc4Zd/_old  2026-03-02 17:41:39.882671067 +0100
+++ /var/tmp/diff_new_pack.VZc4Zd/_new  2026-03-02 17:41:39.882671067 +0100
@@ -24,7 +24,7 @@
 %endif
 %{?sle15_python_module_pythons}
 Name:           python-pylint
-Version:        4.0.4
+Version:        4.0.5
 Release:        0
 Summary:        Syntax and style checker for Python code
 License:        GPL-2.0-or-later
@@ -40,7 +40,7 @@
 Requires:       python-dill >= 0.3.7
 Requires:       python-platformdirs >= 2.2
 Requires:       python-tomlkit >= 0.10.1
-Requires:       (python-astroid >= 4.0.2 with python-astroid < 4.1.0~dev0)
+Requires:       (python-astroid >= 4.0.2 with python-astroid < 4.2.0)
 Requires:       (python-isort >= 5 with python-isort < 8)
 Requires:       (python-mccabe >= 0.6 with python-mccabe < 0.8)
 BuildArch:      noarch
@@ -52,7 +52,7 @@
 %endif
 %if %{with tests}
 # SECTION pylint deps
-BuildRequires:  %{python_module astroid >= 4.0.2 with %python-astroid < 
4.1.0~dev0}
+BuildRequires:  %{python_module astroid >= 4.0.2 with %python-astroid < 4.2.0}
 BuildRequires:  %{python_module dill >= 0.3.7}
 BuildRequires:  %{python_module enchant}
 BuildRequires:  %{python_module isort >= 5 with %python-isort < 8}

++++++ pylint-4.0.4-gh.tar.gz -> pylint-4.0.5-gh.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/CONTRIBUTORS.txt 
new/pylint-4.0.5/CONTRIBUTORS.txt
--- old/pylint-4.0.4/CONTRIBUTORS.txt   2025-11-30 14:24:33.000000000 +0100
+++ new/pylint-4.0.5/CONTRIBUTORS.txt   2026-02-20 10:02:31.000000000 +0100
@@ -313,6 +313,7 @@
 - Grizzly Nyo <[email protected]>
 - Gabriel R. Sezefredo <[email protected]>: Fixed "exception-escape" false 
positive with generators
 - Filipe Brandenburger <[email protected]>
+- Felix Preuschoff <[email protected]>
 - Fantix King <[email protected]> (UChicago)
 - Eric McDonald <[email protected]>
 - Elias Dorneles <[email protected]>: minor adjust to config defaults 
and docs
@@ -494,6 +495,7 @@
 - Michael Giuffrida <[email protected]>
 - Melvin Hazeleger <[email protected]>
 - Meltem Kenis <[email protected]>
+- Mehraz Hossain Rumman <[email protected]>
 - Mehdi Drissi <[email protected]>
 - Matěj Grabovský <[email protected]>
 - Matthijs Blom <[email protected]>
@@ -524,6 +526,7 @@
 - Kayran Schmidt <[email protected]>
 - Karthik Nadig <[email protected]>
 - Jürgen Hermann <[email protected]>
+- Julfried <[email protected]>
 - Josselin Feist <[email protected]>
 - Jonathan Kotta <[email protected]>
 - John Paraskevopoulos <[email protected]>: add 'differing-param-doc' and 
'differing-type-doc'
@@ -565,7 +568,6 @@
 - Giuseppe Valente <[email protected]>
 - Gary Tyler McLeod <[email protected]>
 - Felix von Drigalski <[email protected]>
-- Felix Preuschoff <[email protected]>
 - Fabrice Douchant <[email protected]>
 - Fabio Natali <[email protected]>
 - Fabian Damken <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/doc/user_guide/checkers/features.rst 
new/pylint-4.0.5/doc/user_guide/checkers/features.rst
--- old/pylint-4.0.4/doc/user_guide/checkers/features.rst       2025-11-30 
14:24:33.000000000 +0100
+++ new/pylint-4.0.5/doc/user_guide/checkers/features.rst       2026-02-20 
10:02:31.000000000 +0100
@@ -1085,7 +1085,8 @@
 :unspecified-encoding (W1514): *Using open without explicitly specifying an 
encoding*
   It is better to specify an encoding when opening documents. Using the system
   default implicitly can create problems on other operating systems. See
-  https://peps.python.org/pep-0597/
+  https://peps.python.org/pep-0597/ This message can't be emitted when using
+  Python >= 3.15.
 :forgotten-debug-statement (W1515): *Leaving functions creating breakpoints in 
production code is not recommended*
   Calls to breakpoint(), sys.breakpointhook() and pdb.set_trace() should be
   removed from code that is not actively being debugged.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/doc/whatsnew/4/4.0/index.rst 
new/pylint-4.0.5/doc/whatsnew/4/4.0/index.rst
--- old/pylint-4.0.4/doc/whatsnew/4/4.0/index.rst       2025-11-30 
14:24:33.000000000 +0100
+++ new/pylint-4.0.5/doc/whatsnew/4/4.0/index.rst       2026-02-20 
10:02:31.000000000 +0100
@@ -74,6 +74,52 @@
 
 .. towncrier release notes start
 
+What's new in Pylint 4.0.5?
+---------------------------
+Release date: 2026-02-20
+
+
+False Positives Fixed
+---------------------
+
+- Fix possibly-used-before-assignment false positive when using self.fail() in 
tests.
+
+  Closes #10743 (`#10743 <https://github.com/pylint-dev/pylint/issues/10743>`_)
+
+- Fixed false positive for ``logging-unsupported-format`` when no arguments 
are provided to logging functions.
+
+  According to Python's logging documentation, no formatting is performed when 
no arguments are supplied, so strings like ``logging.error("%test")`` are valid.
+
+  Closes #10752 (`#10752 <https://github.com/pylint-dev/pylint/issues/10752>`_)
+
+- Fix a false positive for ``invalid-name`` where a dataclass field typed with 
``Final``
+  was evaluated against the ``class_const`` regex instead of the 
``class_attribute`` regex.
+
+  Closes #10790 (`#10790 <https://github.com/pylint-dev/pylint/issues/10790>`_)
+
+- Avoid emitting `unspecified-encoding` (W1514) when `py-version` is 3.15+.
+
+  Refs #10791 (`#10791 <https://github.com/pylint-dev/pylint/issues/10791>`_)
+
+
+
+Other Bug Fixes
+---------------
+
+- Fix `--known_third_party` config being ignored.
+
+  Closes #10801 (`#10801 <https://github.com/pylint-dev/pylint/issues/10801>`_)
+
+- Fixed dynamic color mapping for "fail-on" messages when using multiple 
reporter/output formats.
+
+  Closes #10825 (`#10825 <https://github.com/pylint-dev/pylint/issues/10825>`_)
+
+- dependency on isort is now set to <9, permitting to use isort 8.
+
+  Closes #10857 (`#10857 <https://github.com/pylint-dev/pylint/issues/10857>`_)
+
+
+
 What's new in Pylint 4.0.4?
 --------------------------------
 Release date: 2025-11-30
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/pylint/__pkginfo__.py 
new/pylint-4.0.5/pylint/__pkginfo__.py
--- old/pylint-4.0.4/pylint/__pkginfo__.py      2025-11-30 14:24:33.000000000 
+0100
+++ new/pylint-4.0.5/pylint/__pkginfo__.py      2026-02-20 10:02:31.000000000 
+0100
@@ -9,7 +9,7 @@
 
 from __future__ import annotations
 
-__version__ = "4.0.4"
+__version__ = "4.0.5"
 
 
 def get_numversion_from_version(v: str) -> tuple[int, int, int]:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/pylint/checkers/base/name_checker/checker.py 
new/pylint-4.0.5/pylint/checkers/base/name_checker/checker.py
--- old/pylint-4.0.4/pylint/checkers/base/name_checker/checker.py       
2025-11-30 14:24:33.000000000 +0100
+++ new/pylint-4.0.5/pylint/checkers/base/name_checker/checker.py       
2026-02-20 10:02:31.000000000 +0100
@@ -552,9 +552,14 @@
         elif isinstance(frame, nodes.ClassDef) and not any(
             frame.local_attr_ancestors(node.name)
         ):
-            if utils.is_enum_member(node) or 
utils.is_assign_name_annotated_with(
-                node, "Final"
-            ):
+            if utils.is_assign_name_annotated_with_class_var_typing_name(node, 
"Final"):
+                self._check_name("class_const", node.name, node)
+            elif utils.is_assign_name_annotated_with(node, "Final"):
+                if frame.is_dataclass:
+                    self._check_name("class_attribute", node.name, node)
+                else:
+                    self._check_name("class_const", node.name, node)
+            elif utils.is_enum_member(node):
                 self._check_name("class_const", node.name, node)
             else:
                 self._check_name("class_attribute", node.name, node)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/pylint/checkers/imports.py 
new/pylint-4.0.5/pylint/checkers/imports.py
--- old/pylint-4.0.4/pylint/checkers/imports.py 2025-11-30 14:24:33.000000000 
+0100
+++ new/pylint-4.0.5/pylint/checkers/imports.py 2026-02-20 10:02:31.000000000 
+0100
@@ -322,7 +322,6 @@
 DEFAULT_PREFERRED_MODULES = ()
 
 
-# pylint: disable-next = too-many-instance-attributes
 class ImportsChecker(DeprecatedMixin, BaseChecker):
     """BaseChecker for import statements.
 
@@ -459,15 +458,6 @@
         )
         self._excluded_edges: defaultdict[str, set[str]] = defaultdict(set)
 
-        self._isort_config = isort.Config(
-            # There is no typo here. EXTRA_standard_library is
-            # what most users want. The option has been named
-            # KNOWN_standard_library for ages in pylint, and we
-            # don't want to break compatibility.
-            extra_standard_library=linter.config.known_standard_library,
-            known_third_party=linter.config.known_third_party,
-        )
-
     def open(self) -> None:
         """Called before visiting project (i.e set of modules)."""
         self.linter.stats.dependencies = {}
@@ -756,6 +746,21 @@
         imports = [import_node for (import_node, _) in imports]
         return any(astroid.are_exclusive(import_node, node) for import_node in 
imports)
 
+    @property
+    def _isort_config(self) -> isort.Config:
+        """Get the config for use with isort.
+
+        Only valid after CLI parsing finished, i.e. not in __init__
+        """
+        return isort.Config(
+            # There is no typo here. EXTRA_standard_library is
+            # what most users want. The option has been named
+            # KNOWN_standard_library for ages in pylint, and we
+            # don't want to break compatibility.
+            extra_standard_library=self.linter.config.known_standard_library,
+            known_third_party=self.linter.config.known_third_party,
+        )
+
     def _check_imports_order(self, _module_node: nodes.Module) -> tuple[
         list[tuple[ImportNode, str]],
         list[tuple[ImportNode, str]],
@@ -763,7 +768,7 @@
     ]:
         """Checks imports of module `node` are grouped by category.
 
-        Imports must follow this order: standard, 3rd party, local
+        Imports must follow this order: standard, 3rd party, 1st party, local
         """
         std_imports: list[tuple[ImportNode, str]] = []
         third_party_imports: list[tuple[ImportNode, str]] = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/pylint/checkers/logging.py 
new/pylint-4.0.5/pylint/checkers/logging.py
--- old/pylint-4.0.4/pylint/checkers/logging.py 2025-11-30 14:24:33.000000000 
+0100
+++ new/pylint-4.0.5/pylint/checkers/logging.py 2026-02-20 10:02:31.000000000 
+0100
@@ -355,12 +355,16 @@
                         keyword_args_cnt + implicit_pos_args + 
explicit_pos_args
                     )
             except utils.UnsupportedFormatCharacter as ex:
-                char = format_string[ex.index]
-                self.add_message(
-                    "logging-unsupported-format",
-                    node=node,
-                    args=(char, ord(char), ex.index),
-                )
+                if num_args > 0:
+                    # Only report unsupported format characters if arguments 
are provided
+                    # When no arguments are supplied, no formatting is 
performed
+                    # 
https://docs.python.org/3/library/logging.html#logging.Logger.debug
+                    char = format_string[ex.index]
+                    self.add_message(
+                        "logging-unsupported-format",
+                        node=node,
+                        args=(char, ord(char), ex.index),
+                    )
                 return
             except utils.IncompleteFormatString:
                 self.add_message("logging-format-truncated", node=node)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/pylint/checkers/stdlib.py 
new/pylint-4.0.5/pylint/checkers/stdlib.py
--- old/pylint-4.0.4/pylint/checkers/stdlib.py  2025-11-30 14:24:33.000000000 
+0100
+++ new/pylint-4.0.5/pylint/checkers/stdlib.py  2026-02-20 10:02:31.000000000 
+0100
@@ -580,6 +580,7 @@
             "It is better to specify an encoding when opening documents. "
             "Using the system default implicitly can create problems on other 
operating systems. "
             "See https://peps.python.org/pep-0597/";,
+            {"maxversion": (3, 15)},
         ),
         "W1515": (
             "Leaving functions creating breakpoints in production code is not 
recommended",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/pylint/checkers/utils.py 
new/pylint-4.0.5/pylint/checkers/utils.py
--- old/pylint-4.0.4/pylint/checkers/utils.py   2025-11-30 14:24:33.000000000 
+0100
+++ new/pylint-4.0.5/pylint/checkers/utils.py   2026-02-20 10:02:31.000000000 
+0100
@@ -6,7 +6,7 @@
 
 from __future__ import annotations
 
-import _string  # pylint: disable=wrong-import-order # Ruff and Isort disagree 
about the order here
+import _string
 import builtins
 import fnmatch
 import itertools
@@ -238,7 +238,13 @@
 SINGLETON_VALUES = {True, False, None}
 
 TERMINATING_FUNCS_QNAMES = frozenset(
-    {"_sitebuiltins.Quitter", "sys.exit", "posix._exit", "nt._exit"}
+    {
+        "_sitebuiltins.Quitter",
+        "sys.exit",
+        "posix._exit",
+        "nt._exit",
+        "unittest.case.TestCase.fail",
+    }
 )
 
 
@@ -1753,6 +1759,22 @@
     match annotation:
         case nodes.Name(name=n) | nodes.Attribute(attrname=n) if n == 
typing_name:
             return True
+    return False
+
+
+def is_assign_name_annotated_with_class_var_typing_name(
+    node: nodes.AssignName, typing_name: str
+) -> bool:
+    if not is_assign_name_annotated_with(node, "ClassVar"):
+        return False
+    annotation = node.parent.annotation
+    if isinstance(annotation, nodes.Subscript):
+        annotation = annotation.slice
+        if isinstance(annotation, nodes.Subscript):
+            annotation = annotation.value
+    match annotation:
+        case nodes.Name(name=n) | nodes.Attribute(attrname=n) if n == 
typing_name:
+            return True
     return False
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/pylint/lint/pylinter.py 
new/pylint-4.0.5/pylint/lint/pylinter.py
--- old/pylint-4.0.4/pylint/lint/pylinter.py    2025-11-30 14:24:33.000000000 
+0100
+++ new/pylint-4.0.5/pylint/lint/pylinter.py    2026-02-20 10:02:31.000000000 
+0100
@@ -545,9 +545,9 @@
         if isinstance(self.reporter, ColorizedTextReporter):
             self.reporter.set_fail_on_symbols(self.fail_on_symbols)
         elif isinstance(self.reporter, reporters.MultiReporter):
-            for _reporter in self.reporter._sub_reporters:
-                if isinstance(self.reporter, ColorizedTextReporter):
-                    self.reporter.set_fail_on_symbols(self.fail_on_symbols)
+            for reporter in self.reporter._sub_reporters:
+                if isinstance(reporter, ColorizedTextReporter):
+                    reporter.set_fail_on_symbols(self.fail_on_symbols)
 
     def disable_reporters(self) -> None:
         """Disable all reporters."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/pyproject.toml 
new/pylint-4.0.5/pyproject.toml
--- old/pylint-4.0.4/pyproject.toml     2025-11-30 14:24:33.000000000 +0100
+++ new/pylint-4.0.5/pyproject.toml     2026-02-20 10:02:31.000000000 +0100
@@ -45,7 +45,7 @@
   "dill>=0.2; python_version<'3.11'",
   "dill>=0.3.6; python_version>='3.11'",
   "dill>=0.3.7; python_version>='3.12'",
-  "isort>=5,!=5.13,<8",
+  "isort>=5,!=5.13,<9",
   "mccabe>=0.6,<0.8",
   "platformdirs>=2.2",
   "tomli>=1.1; python_version<'3.11'",
@@ -94,7 +94,7 @@
 # Configuration for the build system
 test-min = [
   # Base test dependencies
-  "astroid==4.0.1",                     # Pinned to a specific version for 
tests
+  "astroid==4.0.2",                     # Pinned to a specific version for 
tests
   "py~=1.11.0",
   "pytest~=8.4",
   "pytest-benchmark~=5.1",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/tbump.toml new/pylint-4.0.5/tbump.toml
--- old/pylint-4.0.4/tbump.toml 2025-11-30 14:24:33.000000000 +0100
+++ new/pylint-4.0.5/tbump.toml 2026-02-20 10:02:31.000000000 +0100
@@ -1,7 +1,7 @@
 github_url = "https://github.com/pylint-dev/pylint";
 
 [version]
-current = "4.0.4"
+current = "4.0.5"
 regex = '''
 ^(?P<major>0|[1-9]\d*)
 \.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pylint-4.0.4/tests/checkers/unittest_utils.py 
new/pylint-4.0.5/tests/checkers/unittest_utils.py
--- old/pylint-4.0.4/tests/checkers/unittest_utils.py   2025-11-30 
14:24:33.000000000 +0100
+++ new/pylint-4.0.5/tests/checkers/unittest_utils.py   2026-02-20 
10:02:31.000000000 +0100
@@ -622,3 +622,22 @@
         assert utils.is_reassigned_before_current(first_assign_name, "x") is 
False
     finally:
         first_assign_name.lineno = original_lineno
+
+
+def test_is_terminating_func_unittest_fail() -> None:
+    node = astroid.extract_node(
+        """
+    from unittest import TestCase
+    import os
+
+    class TestX(TestCase):
+        def test_foo(self):
+            if 'FOO' in os.environ:
+                x = 1
+            else:
+                self.fail()  #@
+            print(x)
+    """
+    )
+    result = utils.is_terminating_func(node)
+    assert result is True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.py
 
new/pylint-4.0.5/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.py
--- 
old/pylint-4.0.4/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.py
  2025-11-30 14:24:33.000000000 +0100
+++ 
new/pylint-4.0.5/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.py
  2026-02-20 10:02:31.000000000 +0100
@@ -3,7 +3,7 @@
 # pylint: disable=missing-class-docstring, missing-function-docstring
 
 from dataclasses import dataclass
-from typing import Final
+from typing import ClassVar, Final
 
 module_snake_case_constant: Final[int] = 42  # [invalid-name]
 MODULE_UPPER_CASE_CONSTANT: Final[int] = 42
@@ -17,8 +17,11 @@
 
 @dataclass
 class Class:
-    class_snake_case_constant: Final[int] = 42  # [invalid-name]
-    CLASS_UPPER_CASE_CONSTANT: Final[int] = 42
+    class_snake_case_constant: ClassVar[Final[int]] = 42  # [invalid-name]
+    CLASS_UPPER_CASE_CONSTANT: ClassVar[Final[int]] = 42
+
+    field_annotated_with_final: Final[int] = 42
+    FIELD_ANNOTATED_WITH_FINAL: Final[int] = 42
 
     def method(self) -> None:
         method_snake_case_constant: Final[int] = 42
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.txt
 
new/pylint-4.0.5/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.txt
--- 
old/pylint-4.0.4/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.txt
 2025-11-30 14:24:33.000000000 +0100
+++ 
new/pylint-4.0.5/tests/functional/i/invalid/invalid_name/invalid_name_with_final_typing.txt
 2026-02-20 10:02:31.000000000 +0100
@@ -1,4 +1,4 @@
 invalid-name:8:0:8:26::"Constant name ""module_snake_case_constant"" doesn't 
conform to UPPER_CASE naming style":HIGH
 invalid-name:14:4:14:32:function:"Variable name 
""FUNCTION_UPPER_CASE_CONSTANT"" doesn't conform to snake_case naming 
style":HIGH
 invalid-name:20:4:20:29:Class:"Class constant name 
""class_snake_case_constant"" doesn't conform to UPPER_CASE naming style":HIGH
-invalid-name:25:8:25:34:Class.method:"Variable name 
""METHOD_UPPER_CASE_CONSTANT"" doesn't conform to snake_case naming style":HIGH
+invalid-name:28:8:28:34:Class.method:"Variable name 
""METHOD_UPPER_CASE_CONSTANT"" doesn't conform to snake_case naming style":HIGH
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/l/logging/logging_unsupported_format.py 
new/pylint-4.0.5/tests/functional/l/logging/logging_unsupported_format.py
--- old/pylint-4.0.4/tests/functional/l/logging/logging_unsupported_format.py   
1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-4.0.5/tests/functional/l/logging/logging_unsupported_format.py   
2026-02-20 10:02:31.000000000 +0100
@@ -0,0 +1,23 @@
+"""Tests for logging-unsupported-format (issue #10752)
+
+According to Python logging documentation, no formatting is performed
+when no arguments are supplied. This test verifies that unsupported
+format characters are only reported when arguments are provided.
+"""
+
+import logging
+
+# These should NOT trigger warnings (no args = no formatting)
+logging.error("%test")
+logging.warning("%badformat")
+logging.info("%z - invalid specifier")
+logging.debug("%q %k %z - multiple invalid")
+
+# These SHOULD trigger warnings (args provided = formatting attempted)
+logging.error("%test", 123)  # [logging-unsupported-format]
+logging.warning("%bad", "arg")  # [logging-unsupported-format]
+logging.info("Value: %s, Invalid: %z", "test", "val")  # 
[logging-unsupported-format]
+
+# Valid format strings should work fine
+logging.info("User %s logged in", "john")
+logging.debug("Count: %d", 42)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/l/logging/logging_unsupported_format.txt 
new/pylint-4.0.5/tests/functional/l/logging/logging_unsupported_format.txt
--- old/pylint-4.0.4/tests/functional/l/logging/logging_unsupported_format.txt  
1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-4.0.5/tests/functional/l/logging/logging_unsupported_format.txt  
2026-02-20 10:02:31.000000000 +0100
@@ -0,0 +1,3 @@
+logging-unsupported-format:17:0:17:27::Unsupported logging format character 
't' (0x74) at index 1:UNDEFINED
+logging-unsupported-format:18:0:18:30::Unsupported logging format character 
'b' (0x62) at index 1:UNDEFINED
+logging-unsupported-format:19:0:19:53::Unsupported logging format character 
'z' (0x7a) at index 21:UNDEFINED
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/u/unspecified_encoding_py315.py 
new/pylint-4.0.5/tests/functional/u/unspecified_encoding_py315.py
--- old/pylint-4.0.4/tests/functional/u/unspecified_encoding_py315.py   
1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-4.0.5/tests/functional/u/unspecified_encoding_py315.py   
2026-02-20 10:02:31.000000000 +0100
@@ -0,0 +1,18 @@
+"""No warnings for using open() without specifying an encoding (Python 
3.15+)."""
+
+import io
+from pathlib import Path
+
+FILENAME = "foo.bar"
+
+open(FILENAME)
+open(FILENAME, encoding=None)
+io.open(FILENAME)
+io.open(FILENAME, encoding=None)
+
+Path(FILENAME).open()
+Path(FILENAME).open(encoding=None)
+Path(FILENAME).read_text()
+Path(FILENAME).read_text(encoding=None)
+Path(FILENAME).write_text("string")
+Path(FILENAME).write_text("string", encoding=None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/u/unspecified_encoding_py315.rc 
new/pylint-4.0.5/tests/functional/u/unspecified_encoding_py315.rc
--- old/pylint-4.0.4/tests/functional/u/unspecified_encoding_py315.rc   
1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-4.0.5/tests/functional/u/unspecified_encoding_py315.rc   
2026-02-20 10:02:31.000000000 +0100
@@ -0,0 +1,6 @@
+[MAIN]
+py-version=3.15
+
+[Messages Control]
+disable=all
+enable=unspecified-encoding
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/u/unspecified_encoding_py38.rc 
new/pylint-4.0.5/tests/functional/u/unspecified_encoding_py38.rc
--- old/pylint-4.0.4/tests/functional/u/unspecified_encoding_py38.rc    
1970-01-01 01:00:00.000000000 +0100
+++ new/pylint-4.0.5/tests/functional/u/unspecified_encoding_py38.rc    
2026-02-20 10:02:31.000000000 +0100
@@ -0,0 +1,2 @@
+[MAIN]
+py-version=3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/w/wrong_import_order2.py 
new/pylint-4.0.5/tests/functional/w/wrong_import_order2.py
--- old/pylint-4.0.4/tests/functional/w/wrong_import_order2.py  2025-11-30 
14:24:33.000000000 +0100
+++ new/pylint-4.0.5/tests/functional/w/wrong_import_order2.py  2026-02-20 
10:02:31.000000000 +0100
@@ -8,6 +8,7 @@
 
 # external imports
 import isort
+import datetime  # std import that should be treated as third-party
 
 from six import moves
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/functional/w/wrong_import_order2.rc 
new/pylint-4.0.5/tests/functional/w/wrong_import_order2.rc
--- old/pylint-4.0.4/tests/functional/w/wrong_import_order2.rc  1970-01-01 
01:00:00.000000000 +0100
+++ new/pylint-4.0.5/tests/functional/w/wrong_import_order2.rc  2026-02-20 
10:02:31.000000000 +0100
@@ -0,0 +1,2 @@
+[IMPORTS]
+known-third-party=datetime
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/pylint-4.0.4/tests/testutils/data/m/minimal_messages_config.py 
new/pylint-4.0.5/tests/testutils/data/m/minimal_messages_config.py
--- old/pylint-4.0.4/tests/testutils/data/m/minimal_messages_config.py  
2025-11-30 14:24:33.000000000 +0100
+++ new/pylint-4.0.5/tests/testutils/data/m/minimal_messages_config.py  
2026-02-20 10:02:31.000000000 +0100
@@ -5,6 +5,7 @@
 ``test_minimal_messages_config_excluded_file``.
 """
 
-f = open("foo.txt")  # [consider-using-with, unspecified-encoding]
+f = open("foo.txt")  # [consider-using-with]
+# -1:<3.15: [unspecified-encoding]
 
 print("%d" % 1)  # [consider-using-f-string]

Reply via email to