diff --git a/pylint-3.2.6-gh.tar.gz b/pylint-3.2.6-gh.tar.gz deleted file mode 100644 index 6058e23..0000000 --- a/pylint-3.2.6-gh.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:66c917c27c74b84d44aecacd9725defeb3ef51bdf916213e52c647f5545dda75 -size 1447684 diff --git a/pylint-3.3.1-gh.tar.gz b/pylint-3.3.1-gh.tar.gz new file mode 100644 index 0000000..3aa13f5 --- /dev/null +++ b/pylint-3.3.1-gh.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3343069bd6f6fcf220cfac79db466f69a509213ed1f0bedc9887600eb0b58084 +size 1453572 diff --git a/pytest-8.patch b/pytest-8.patch deleted file mode 100644 index 97463a1..0000000 --- a/pytest-8.patch +++ /dev/null @@ -1,206 +0,0 @@ -Index: pylint-3.2.6/pylint/testutils/configuration_test.py -=================================================================== ---- pylint-3.2.6.orig/pylint/testutils/configuration_test.py -+++ pylint-3.2.6/pylint/testutils/configuration_test.py -@@ -12,7 +12,6 @@ import logging - import unittest - from pathlib import Path - from typing import Any, Dict --from unittest.mock import Mock - - from pylint.lint import Run - -@@ -135,18 +134,15 @@ def get_expected_output( - - def run_using_a_configuration_file( - configuration_path: Path | str, file_to_lint: str = __file__ --) -> tuple[Mock, Mock, Run]: -+) -> Run: - """Simulate a run with a configuration without really launching the checks.""" - configuration_path = str(configuration_path) - args = ["--rcfile", configuration_path, file_to_lint] -- # We do not capture the `SystemExit` as then the `runner` variable -- # would not be accessible outside the `with` block. -- with unittest.mock.patch("sys.exit") as mocked_exit: -- # Do not actually run checks, that could be slow. We don't mock -- # `PyLinter.check`: it calls `PyLinter.initialize` which is -- # needed to properly set up messages inclusion/exclusion -- # in `_msg_states`, used by `is_message_enabled`. -- check = "pylint.lint.pylinter.check_parallel" -- with unittest.mock.patch(check) as mocked_check_parallel: -- runner = Run(args) -- return mocked_exit, mocked_check_parallel, runner -+ # Do not actually run checks, that could be slow. We don't mock -+ # `PyLinter.check`: it calls `PyLinter.initialize` which is -+ # needed to properly set up messages inclusion/exclusion -+ # in `_msg_states`, used by `is_message_enabled`. -+ check = "pylint.lint.pylinter.check_parallel" -+ with unittest.mock.patch(check): -+ runner = Run(args, exit=False) -+ return runner -Index: pylint-3.2.6/requirements_test_min.txt -=================================================================== ---- pylint-3.2.6.orig/requirements_test_min.txt -+++ pylint-3.2.6/requirements_test_min.txt -@@ -3,7 +3,7 @@ - astroid==3.2.4 # Pinned to a specific version for tests - typing-extensions~=4.11 - py~=1.11.0 --pytest~=7.4 -+pytest~=8.2 - pytest-benchmark~=4.0 - pytest-timeout~=2.3 - towncrier~=23.11 -Index: pylint-3.2.6/tests/config/test_config.py -=================================================================== ---- pylint-3.2.6.orig/tests/config/test_config.py -+++ pylint-3.2.6/tests/config/test_config.py -@@ -55,10 +55,8 @@ reports = "yes" - ) - env_var = "tmp_path_env" - os.environ[env_var] = str(config_file) -- mock_exit, _, runner = run_using_a_configuration_file( -- f"${env_var}", file_to_lint_path -- ) -- mock_exit.assert_called_once_with(0) -+ runner = run_using_a_configuration_file(f"${env_var}", file_to_lint_path) -+ assert runner.linter.msg_status == 0 - check_configuration_file_reader(runner) - - -@@ -226,7 +224,7 @@ def test_disable_before_enable_all_takes - runner = Run(["--disable=fixme", "--enable=all", str(FIXME_MODULE)], exit=False) - assert not runner.linter.stats.by_msg - -- _, _, toml_runner = run_using_a_configuration_file( -+ toml_runner = run_using_a_configuration_file( - HERE - / "functional" - / "toml" -@@ -239,7 +237,7 @@ def test_enable_before_disable_all_takes - runner = Run(["--enable=fixme", "--disable=all", str(FIXME_MODULE)], exit=False) - assert runner.linter.stats.by_msg - -- _, _, toml_runner = run_using_a_configuration_file( -+ toml_runner = run_using_a_configuration_file( - HERE - / "functional" - / "toml" -Index: pylint-3.2.6/tests/config/test_functional_config_loading.py -=================================================================== ---- pylint-3.2.6.orig/tests/config/test_functional_config_loading.py -+++ pylint-3.2.6/tests/config/test_functional_config_loading.py -@@ -57,10 +57,8 @@ def default_configuration( - ) -> PylintConfiguration: - empty_pylintrc = tmp_path / "pylintrc" - empty_pylintrc.write_text("") -- mock_exit, _, runner = run_using_a_configuration_file( -- str(empty_pylintrc), file_to_lint_path -- ) -- mock_exit.assert_called_once_with(0) -+ runner = run_using_a_configuration_file(str(empty_pylintrc), file_to_lint_path) -+ assert runner.linter.msg_status == 0 - return runner.linter.config.__dict__ - - -@@ -88,10 +86,8 @@ def test_functional_config_loading( - warnings.filterwarnings( - "ignore", message="The use of 'MASTER'.*", category=UserWarning - ) -- mock_exit, _, runner = run_using_a_configuration_file( -- configuration_path, file_to_lint_path -- ) -- mock_exit.assert_called_once_with(expected_code) -+ runner = run_using_a_configuration_file(configuration_path, file_to_lint_path) -+ assert runner.linter.msg_status == expected_code - out, err = capsys.readouterr() - # 'rstrip()' applied, so we can have a final newline in the expected test file - assert expected_output.rstrip() == out.rstrip(), msg -Index: pylint-3.2.6/tests/lint/unittest_lint.py -=================================================================== ---- pylint-3.2.6.orig/tests/lint/unittest_lint.py -+++ pylint-3.2.6/tests/lint/unittest_lint.py -@@ -20,6 +20,7 @@ from pathlib import Path - from shutil import copy, rmtree - from unittest import mock - -+import astroid - import platformdirs - import pytest - from astroid import nodes -@@ -1053,7 +1054,9 @@ def test_finds_pyi_file() -> None: - exit=False, - ) - assert run.linter.current_file is not None -- assert run.linter.current_file.endswith("foo.pyi") -+ assert run.linter.current_file.endswith( -+ "a_module_that_we_definitely_dont_use_in_the_functional_tests.pyi" -+ ) - - - def test_recursive_finds_pyi_file() -> None: -@@ -1068,7 +1071,9 @@ def test_recursive_finds_pyi_file() -> N - exit=False, - ) - assert run.linter.current_file is not None -- assert run.linter.current_file.endswith("foo.pyi") -+ assert run.linter.current_file.endswith( -+ "a_module_that_we_definitely_dont_use_in_the_functional_tests.pyi" -+ ) - - - def test_no_false_positive_from_pyi_stub() -> None: -@@ -1126,6 +1131,9 @@ def test_recursive_ignore(ignore_paramet - ): - module = os.path.abspath(join(REGRTEST_DATA_DIR, *regrtest_data_module)) - assert module in linted_file_paths -+ # We lint the modules in `regrtest` in other tests as well. Prevent test pollution by -+ # explicitly clearing the astroid caches. -+ astroid.MANAGER.clear_cache() - - - def test_source_roots_globbing() -> None: -Index: pylint-3.2.6/tests/regrtest_data/pyi/a_module_that_we_definitely_dont_use_in_the_functional_tests.pyi -=================================================================== ---- /dev/null -+++ pylint-3.2.6/tests/regrtest_data/pyi/a_module_that_we_definitely_dont_use_in_the_functional_tests.pyi -@@ -0,0 +1,5 @@ -+# This module is named in a particular way to prevent test pollution. It was previously named 'foo' and -+# all mentions of 'foo' were wrongly resolved to this stub file. -+foo = 1 -+ -+def three_item_iterable(): ... -Index: pylint-3.2.6/tests/regrtest_data/pyi/foo.pyi -=================================================================== ---- pylint-3.2.6.orig/tests/regrtest_data/pyi/foo.pyi -+++ /dev/null -@@ -1,4 +0,0 @@ --foo = 1 -- --def three_item_iterable(): -- ... -Index: pylint-3.2.6/tests/regrtest_data/uses_module_with_stub.py -=================================================================== ---- pylint-3.2.6.orig/tests/regrtest_data/uses_module_with_stub.py -+++ pylint-3.2.6/tests/regrtest_data/uses_module_with_stub.py -@@ -1,5 +1,5 @@ - """If the stub is preferred over the .py, this might emit not-an-iterable""" --from pyi.foo import three_item_iterable -+from pyi.a_module_that_we_definitely_dont_use_in_the_functional_tests import three_item_iterable - - for val in three_item_iterable(): - print(val) -Index: pylint-3.2.6/tests/regrtest_data/pyi/a_module_that_we_definitely_dont_use_in_the_functional_tests.py -=================================================================== ---- /dev/null -+++ pylint-3.2.6/tests/regrtest_data/pyi/a_module_that_we_definitely_dont_use_in_the_functional_tests.py -@@ -0,0 +1,2 @@ -+def three_item_iterable(): -+ return [1, 2, 3] -Index: pylint-3.2.6/tests/regrtest_data/pyi/foo.py -=================================================================== ---- pylint-3.2.6.orig/tests/regrtest_data/pyi/foo.py -+++ /dev/null -@@ -1,2 +0,0 @@ --def three_item_iterable(): -- return [1, 2, 3] diff --git a/python-pylint.changes b/python-pylint.changes index 22cb608..0b1894b 100644 --- a/python-pylint.changes +++ b/python-pylint.changes @@ -1,3 +1,92 @@ +------------------------------------------------------------------- +Tue Sep 24 13:46:18 UTC 2024 - Dirk Müller + +- update to 3.3.1: + * Fix regression causing some f-strings to not be inferred as + strings. +- update to 3.3.0: + * We migrated ``symilar`` to argparse, from getopt, so the + error and help output changed (for the better). + We exit with 2 instead of sometime 1, sometime 2. + The error output is not captured by the runner anymore. + It's not possible to use a value for the boolean options + anymore (``--ignore-comments 1`` should become + ``--ignore-comments``). + * Add new `declare-non-slot` error which reports when a class + has a `__slots__` member and a type hint on the class is not + present in `__slots__`. + * Added `too-many-positional-arguments` to allow distinguishing + the configuration for too many total arguments + (with keyword-only params specified after `*`) from the + configuration for too many positional-or-keyword or + positional-only arguments. + * Add `using-exception-group-in-unsupported-version` and + `using-generic-type-syntax-in-unsupported-version` for uses + of Python 3.11+ or 3.12+ features on lower supported versions + provided with `--py-version`. + * Add `using-assignment-expression-in-unsupported-version` for + uses of `:=` (walrus operator) on Python versions below 3.8 + provided with `--py-version`. + * Add `using-positional-only-args-in-unsupported-version` for + uses of positional-only args on Python versions below 3.8 + provided with `--py-version`. + * Add ``unnecessary-default-type-args`` to the ``typing`` + extension to detect the use of unnecessary default type args + for ``typing.Generator`` and ``typing.AsyncGenerator``. + * Fix computation of never-returning function: `Never` is + handled in addition to `NoReturn`, and priority is given to + the explicit `--never-returning-functions` option. + * Fix a false negative for `await-outside-async` when await is + inside Lambda. + * Fix a false negative for ``duplicate-argument-name`` by + including ``positional-only``, ``*args`` and ``**kwargs`` + arguments in the check. + * Fix false negative for `multiple-statements` when multiple + statements are present on `else` and `finally` lines of + `try`. + * Fix false negatives when `isinstance` does not have exactly + two arguments. + * pylint now emits a `too-many-function-args` or `no-value-for- + parameter` appropriately for `isinstance` calls. + * `--enable` with `--disable=all` now produces an error, when + an unknown msg code is used. Internal `pylint` messages are + no longer affected by `--disable=all`. + * Impossible to compile regexes for paths in the configuration + or argument given to pylint won't crash anymore but raise an + argparse error and display the error message from + ``re.compile`` instead. + * Fix a bug where a ``tox.ini`` file with pylint configuration + was ignored and it exists in the current directory. + * ``.cfg`` and ``.ini`` files containing a ``Pylint`` + configuration may now use a section named ``[pylint]``. This + enhancement impacts the scenario where these file types are + used as defaults when they are present and have not been + explicitly referred to, using the ``--rcfile`` option. + * Improve file discovery for directories that are not python + packages. + * Remove support for launching pylint with Python 3.8. + * Code that supports Python 3.8 can still be linted with the + ``--py-version=3.8`` setting. + * Add support for Python 3.13. + * All variables, classes, functions and file names containing + the word 'similar', when it was, in fact, referring to + 'symilar' (the standalone program for the duplicate-code + check) were renamed to 'symilar'. + * Remove old-style classes (Python 2) code and remove check for + new-style class since everything is new-style in Python 3. + Updated doc for exception checker to remove reference to new + style class. +- update to 3.2.7: + * Fixed a false positive `unreachable` for `NoReturn` coroutine + functions. + * Fix crash in refactoring checker when calling a lambda bound + as a method. + * Fix a crash in ``undefined-loop-variable`` when providing the + ``iterable`` argument to ``enumerate()``. + * Fix to address indeterminacy of error message in case a + module name is same as another in a separate namespace. +- drop support-astroid-3.3.patch pytest-8.patch: upstream + ------------------------------------------------------------------- Mon Aug 12 06:12:36 UTC 2024 - Steve Kowalik diff --git a/python-pylint.spec b/python-pylint.spec index bebacd2..56b3a0d 100644 --- a/python-pylint.spec +++ b/python-pylint.spec @@ -18,18 +18,15 @@ %{?sle15_python_module_pythons} %bcond_without tests +%global pythons python3 Name: python-pylint -Version: 3.2.6 +Version: 3.3.1 Release: 0 Summary: Syntax and style checker for Python code License: GPL-2.0-or-later URL: https://github.com/pylint-dev/pylint # Tests are no longer packaged in the PyPI sdist, use GitHub archive Source: https://github.com/pylint-dev/pylint/archive/refs/tags/v%{version}.tar.gz#/pylint-%{version}-gh.tar.gz -# PATCH-FIX-UPSTREAM pytest-8.patch gh#pylint-dev/pylint#9576 -Patch0: pytest-8.patch -# PATCH-FIX-UPSTREAM One commit of gh#pylint-dev/pylint#9851 -Patch1: support-astroid-3.3.patch BuildRequires: %{python_module base >= 3.7.2} BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} @@ -50,6 +47,7 @@ Requires: python-typing-extensions >= 4.9 # SECTION pylint deps BuildRequires: %{python_module astroid >= 3.3.0 with %python-astroid < 3.4.0~dev0} BuildRequires: %{python_module dill >= 0.3.6} +BuildRequires: %{python_module enchant} BuildRequires: %{python_module isort >= 4.2.5 with %python-isort < 6} BuildRequires: %{python_module mccabe >= 0.6 with %python-mccabe < 0.8} BuildRequires: %{python_module platformdirs >= 2.2} diff --git a/support-astroid-3.3.patch b/support-astroid-3.3.patch deleted file mode 100644 index 428f671..0000000 --- a/support-astroid-3.3.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 8afd218a922b9b572c508ada228b7ed27a607014 Mon Sep 17 00:00:00 2001 -From: Jacob Walls -Date: Sun, 4 Aug 2024 11:46:21 -0400 -Subject: [PATCH 2/4] Bump astroid to 3.3.0 - ---- - pyproject.toml | 2 +- - requirements_test_min.txt | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -Index: pylint-3.2.6/pyproject.toml -=================================================================== ---- pylint-3.2.6.orig/pyproject.toml -+++ pylint-3.2.6/pyproject.toml -@@ -41,7 +41,7 @@ dependencies = [ - # Also upgrade requirements_test_min.txt. - # Pinned to dev of second minor update to allow editable installs and fix primer issues, - # see https://github.com/pylint-dev/astroid/issues/1341 -- "astroid>=3.2.4,<=3.3.0-dev0", -+ "astroid>=3.3.0,<=3.4.0-dev0", - "isort>=4.2.5,<6,!=5.13.0", - "mccabe>=0.6,<0.8", - "tomli>=1.1.0;python_version<'3.11'", -Index: pylint-3.2.6/requirements_test_min.txt -=================================================================== ---- pylint-3.2.6.orig/requirements_test_min.txt -+++ pylint-3.2.6/requirements_test_min.txt -@@ -1,6 +1,6 @@ - .[testutils,spelling] - # astroid dependency is also defined in pyproject.toml --astroid==3.2.4 # Pinned to a specific version for tests -+astroid==3.3.0 # Pinned to a specific version for tests - typing-extensions~=4.11 - py~=1.11.0 - pytest~=8.2