diff --git a/python-lsp-server-advanceflake8.patch b/python-lsp-server-advanceflake8.patch new file mode 100644 index 0000000..540c2d8 --- /dev/null +++ b/python-lsp-server-advanceflake8.patch @@ -0,0 +1,35 @@ +Index: python-lsp-server-1.5.0/pyproject.toml +=================================================================== +--- python-lsp-server-1.5.0.orig/pyproject.toml ++++ python-lsp-server-1.5.0/pyproject.toml +@@ -27,22 +27,22 @@ Homepage = "https://github.com/python-ls + [project.optional-dependencies] + all = [ + "autopep8>=1.6.0,<1.7.0", +- "flake8>=4.0.0,<4.1.0", +- "mccabe>=0.6.0,<0.7.0", +- "pycodestyle>=2.8.0,<2.9.0", ++ "flake8>=5.0.0,<5.1.0", ++ "mccabe>=0.7.0,<0.8.0", ++ "pycodestyle>=2.9.0,<2.10.0", + "pydocstyle>=2.0.0", +- "pyflakes>=2.4.0,<2.5.0", ++ "pyflakes>=2.5.0,<2.6.0", + "pylint>=2.5.0", + "rope>=0.10.5", + "yapf", + "whatthepatch" + ] + autopep8 = ["autopep8>=1.6.0,<1.7.0"] +-flake8 = ["flake8>=4.0.0,<4.1.0"] +-mccabe = ["mccabe>=0.6.0,<0.7.0"] +-pycodestyle = ["pycodestyle>=2.8.0,<2.9.0"] ++flake8 = ["flake8>=5.0.0,<5.1.0"] ++mccabe = ["mccabe>=0.7.0,<0.8.0"] ++pycodestyle = ["pycodestyle>=2.9.0,<2.10.0"] + pydocstyle = ["pydocstyle>=2.0.0"] +-pyflakes = ["pyflakes>=2.4.0,<2.5.0"] ++pyflakes = ["pyflakes>=2.5.0,<2.6.0"] + pylint = ["pylint>=2.5.0"] + rope = ["rope>0.10.5"] + yapf = ["yapf", "whatthepatch>=1.0.2,<2.0.0"] diff --git a/python-lsp-server-pylint-syntax-error.patch b/python-lsp-server-pylint-syntax-error.patch new file mode 100644 index 0000000..06006e0 --- /dev/null +++ b/python-lsp-server-pylint-syntax-error.patch @@ -0,0 +1,102 @@ +diff --git a/test/__init__.py b/test/__init__.py +index ab920d2..bb21669 100644 +--- a/test/__init__.py ++++ b/test/__init__.py +@@ -1,13 +1,9 @@ + # Copyright 2017-2020 Palantir Technologies, Inc. + # Copyright 2021- Python Language Server Contributors. + +-import sys + import pytest + from pylsp import IS_WIN + +-IS_PY3 = sys.version_info.major == 3 + + unix_only = pytest.mark.skipif(IS_WIN, reason="Unix only") + windows_only = pytest.mark.skipif(not IS_WIN, reason="Windows only") +-py3_only = pytest.mark.skipif(not IS_PY3, reason="Python3 only") +-py2_only = pytest.mark.skipif(IS_PY3, reason="Python2 only") +diff --git a/test/plugins/test_pylint_lint.py b/test/plugins/test_pylint_lint.py +index afd5c30..b6c0329 100644 +--- a/test/plugins/test_pylint_lint.py ++++ b/test/plugins/test_pylint_lint.py +@@ -4,10 +4,8 @@ + + import contextlib + import os +-import sys + import tempfile + +-from test import py2_only, py3_only, IS_PY3 + from pylsp import lsp, uris + from pylsp.workspace import Document + from pylsp.plugins import pylint_lint +@@ -53,30 +51,26 @@ def test_pylint(config, workspace): + assert unused_import['severity'] == lsp.DiagnosticSeverity.Warning + assert unused_import['tags'] == [lsp.DiagnosticTag.Unnecessary] + +- if IS_PY3: +- # test running pylint in stdin +- config.plugin_settings('pylint')['executable'] = 'pylint' +- diags = pylint_lint.pylsp_lint(config, doc, True) ++ # test running pylint in stdin ++ config.plugin_settings('pylint')['executable'] = 'pylint' ++ diags = pylint_lint.pylsp_lint(config, doc, True) + +- msg = 'Unused import sys (unused-import)' +- unused_import = [d for d in diags if d['message'] == msg][0] ++ msg = 'Unused import sys (unused-import)' ++ unused_import = [d for d in diags if d['message'] == msg][0] + +- assert unused_import['range']['start'] == { +- 'line': 0, +- 'character': 0, +- } +- assert unused_import['severity'] == lsp.DiagnosticSeverity.Warning ++ assert unused_import['range']['start'] == { ++ 'line': 0, ++ 'character': 0, ++ } ++ assert unused_import['severity'] == lsp.DiagnosticSeverity.Warning + + +-@py3_only +-def test_syntax_error_pylint_py3(config, workspace): ++def test_syntax_error_pylint(config, workspace): + with temp_document(DOC_SYNTAX_ERR, workspace) as doc: + diag = pylint_lint.pylsp_lint(config, doc, True)[0] + +- if sys.version_info[:2] >= (3, 10): +- assert diag['message'].count("[syntax-error] expected ':'") +- else: +- assert diag['message'].startswith('[syntax-error] invalid syntax') ++ assert diag['message'].startswith("[syntax-error]") ++ assert diag['message'].count("expected ':'") or diag['message'].count('invalid syntax') + # Pylint doesn't give column numbers for invalid syntax. + assert diag['range']['start'] == {'line': 0, 'character': 12} + assert diag['severity'] == lsp.DiagnosticSeverity.Error +@@ -86,23 +80,12 @@ def test_syntax_error_pylint_py3(config, workspace): + config.plugin_settings('pylint')['executable'] = 'pylint' + diag = pylint_lint.pylsp_lint(config, doc, True)[0] + +- assert diag['message'].count("expected ':'") or diag['message'].startswith('invalid syntax') ++ assert diag['message'].count("expected ':'") or diag['message'].count('invalid syntax') + # Pylint doesn't give column numbers for invalid syntax. + assert diag['range']['start'] == {'line': 0, 'character': 12} + assert diag['severity'] == lsp.DiagnosticSeverity.Error + + +-@py2_only +-def test_syntax_error_pylint_py2(config, workspace): +- with temp_document(DOC_SYNTAX_ERR, workspace) as doc: +- diag = pylint_lint.pylsp_lint(config, doc, True)[0] +- +- assert diag['message'].startswith('[syntax-error] invalid syntax') +- # Pylint doesn't give column numbers for invalid syntax. +- assert diag['range']['start'] == {'line': 0, 'character': 0} +- assert diag['severity'] == lsp.DiagnosticSeverity.Error +- +- + def test_lint_free_pylint(config, workspace): + # Can't use temp_document because it might give us a file that doesn't + # match pylint's naming requirements. We should be keeping this file clean diff --git a/python-python-lsp-server.changes b/python-python-lsp-server.changes index 07e3489..0bdc3ad 100644 --- a/python-python-lsp-server.changes +++ b/python-python-lsp-server.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Sat Aug 27 09:41:07 UTC 2022 - Ben Greiner + +- Add python-lsp-server-advanceflake8.patch + * gh#python-lsp/python-lsp-server#257 +- Add python-lsp-server-pylint-syntax-error.patch + * gh#python-lsp/python-lsp-server#258 + ------------------------------------------------------------------- Mon Jul 25 12:52:33 UTC 2022 - Ben Greiner diff --git a/python-python-lsp-server.spec b/python-python-lsp-server.spec index 3aee3ee..644b432 100644 --- a/python-python-lsp-server.spec +++ b/python-python-lsp-server.spec @@ -23,6 +23,10 @@ Summary: Python Language Server for the Language Server Protocol License: MIT URL: https://github.com/python-lsp/python-lsp-server Source: https://files.pythonhosted.org/packages/source/p/python-lsp-server/python-lsp-server-%{version}.tar.gz +# PATCH-FEATURE-UPSTREAM python-lsp-server-advanceflake8.patch gh#python-lsp/python-lsp-server#257 +Patch0: python-lsp-server-advanceflake8.patch +# PATCH-FEATURE-UPSTREAM python-lsp-server-pylint-syntax-error.patch gh#python-lsp/python-lsp-server#258 +Patch1: python-lsp-server-pylint-syntax-error.patch BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools >= 61.2} @@ -33,17 +37,15 @@ BuildRequires: python-rpm-macros >= 20210628 # SECTION test requirements BuildRequires: %{python_module PyQt5} BuildRequires: %{python_module autopep8 >= 1.6.0 with %python-autopep8 < 1.7.0} -BuildRequires: %{python_module flake8 >= 4.0.0 with %python-flake8 < 4.1.0} +# flake8 and its dependencies in a particular range, see Patch0 +BuildRequires: %{python_module flake8 >= 5.0.0 with %python-flake8 < 5.1.0} BuildRequires: %{python_module flaky} BuildRequires: %{python_module jedi >= 0.17.2 with %python-jedi < 0.19.0} BuildRequires: %{python_module matplotlib} -BuildRequires: %{python_module mccabe >= 0.6.0} BuildRequires: %{python_module numpy} BuildRequires: %{python_module pandas} BuildRequires: %{python_module pluggy} -BuildRequires: %{python_module pycodestyle >= 2.8.0 with %python-pycodestyle < 2.9.0} BuildRequires: %{python_module pydocstyle >= 2.0.0} -BuildRequires: %{python_module pyflakes >= 2.4.0 with %python-pyflakes < 2.5.0} BuildRequires: %{python_module pylint >= 2.5.0} BuildRequires: %{python_module pytest} BuildRequires: %{python_module python-lsp-jsonrpc >= 1.0.0} @@ -60,19 +62,21 @@ Requires: python-ujson >= 3.0.0 Requires: (python-jedi >= 0.17.2 with python-jedi < 0.19.0) Suggests: python-autopep8 >= 1.6.0 Conflicts: python-autopep8 >= 1.7.0 -Suggests: python-flake8 >= 4.0.0 -Conflicts: python-flake8 >= 4.1.0 -Suggests: python-mccabe >= 0.6.0 -Conflicts: python-mccabe >= 0.7.0 -Suggests: python-pycodestyle >= 2.8.0 -Conflicts: python-pycodestyle >= 2.9.0 Suggests: python-pydocstyle >= 2.0.0 -Suggests: python-pyflakes >= 2.4.0 -Conflicts: python-pyflakes >= 2.5.0 Suggests: python-pylint >= 2.5.0 Suggests: python-rope >= 0.10.5 Suggests: python-yapf Suggests: python-whatthepatch +# SECTION flake8 pins -- see Patch0 +Suggests: python-flake8 >= 5.0.0 +Conflicts: python-flake8 >= 5.1.0 +Suggests: python-mccabe >= 0.7.0 +Conflicts: python-mccabe >= 0.8.0 +Suggests: python-pycodestyle >= 2.9.0 +Conflicts: python-pycodestyle >= 2.10.0 +Suggests: python-pyflakes >= 2.5.0 +Conflicts: python-pyflakes >= 2.6.0 +# SECTION BuildArch: noarch Requires(post): update-alternatives Requires(postun):update-alternatives