mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-python/python-lsp-server: add spyder fork of python-language-server
Bug: https://bugs.gentoo.org/783618 Package-Manager: Portage-3.0.18, Repoman-3.0.3 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
This commit is contained in:
committed by
Andrew Ammerlaan
parent
7fc5a36f83
commit
2bd56688cc
1
dev-python/python-lsp-server/Manifest
Normal file
1
dev-python/python-lsp-server/Manifest
Normal file
@@ -0,0 +1 @@
|
||||
DIST python-lsp-server-1.0.1.tar.gz 56835 BLAKE2B 430e215b7d65bff2008136783539c262ee201d651bf83750333d41353483882fe7a603208c2725c89530a34cef22e73fe1ef26ec80fe7fb42d2df79eae511528 SHA512 bf116d92bdebea41e4f6647673d390887d84be70d612b92b8c3973aa55db4b151c1188b06fb8e3b6dccb814fd22f938572e998f0b1329bf0b69d0e4750b8f5f6
|
||||
@@ -0,0 +1,237 @@
|
||||
From f6d9041b81d142657985b696d8da82cebdbe00bb Mon Sep 17 00:00:00 2001
|
||||
From: krassowski <krassowski.michal@gmail.com>
|
||||
Date: Sun, 25 Apr 2021 21:06:28 +0100
|
||||
Subject: [PATCH 1/2] Address pylint's "consider-using-with" warnings
|
||||
|
||||
---
|
||||
pylsp/plugins/flake8_lint.py | 25 +++++++++++++++----------
|
||||
pylsp/plugins/pylint_lint.py | 28 ++++++++++++++++------------
|
||||
test/plugins/test_flake8_lint.py | 7 +++----
|
||||
test/plugins/test_pylint_lint.py | 7 +++----
|
||||
4 files changed, 37 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/pylsp/plugins/flake8_lint.py b/pylsp/plugins/flake8_lint.py
|
||||
index d632395..dfee5b4 100644
|
||||
--- a/pylsp/plugins/flake8_lint.py
|
||||
+++ b/pylsp/plugins/flake8_lint.py
|
||||
@@ -5,6 +5,7 @@
|
||||
import logging
|
||||
import os.path
|
||||
import re
|
||||
+from contextlib import ExitStack
|
||||
from subprocess import Popen, PIPE
|
||||
from pylsp import hookimpl, lsp
|
||||
|
||||
@@ -65,16 +66,20 @@ def run_flake8(flake8_executable, args, document):
|
||||
)
|
||||
|
||||
log.debug("Calling %s with args: '%s'", flake8_executable, args)
|
||||
- try:
|
||||
- cmd = [flake8_executable]
|
||||
- cmd.extend(args)
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
- except IOError:
|
||||
- log.debug("Can't execute %s. Trying with 'python -m flake8'", flake8_executable)
|
||||
- cmd = ['python', '-m', 'flake8']
|
||||
- cmd.extend(args)
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
- (stdout, stderr) = p.communicate(document.source.encode())
|
||||
+ with ExitStack() as stack:
|
||||
+ try:
|
||||
+ cmd = [flake8_executable]
|
||||
+ cmd.extend(args)
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ stack.enter_context(p)
|
||||
+ except IOError:
|
||||
+ log.debug("Can't execute %s. Trying with 'python -m flake8'", flake8_executable)
|
||||
+ cmd = ['python', '-m', 'flake8']
|
||||
+ cmd.extend(args)
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ stack.enter_context(p)
|
||||
+ # exit stack ensures that even if an exception happens, the process `p` will be properly terminated
|
||||
+ (stdout, stderr) = p.communicate(document.source.encode())
|
||||
if stderr:
|
||||
log.error("Error while running flake8 '%s'", stderr.decode())
|
||||
return stdout.decode()
|
||||
diff --git a/pylsp/plugins/pylint_lint.py b/pylsp/plugins/pylint_lint.py
|
||||
index 5491787..6449cda 100644
|
||||
--- a/pylsp/plugins/pylint_lint.py
|
||||
+++ b/pylsp/plugins/pylint_lint.py
|
||||
@@ -7,6 +7,7 @@
|
||||
import logging
|
||||
import sys
|
||||
import re
|
||||
+from contextlib import ExitStack
|
||||
from subprocess import Popen, PIPE
|
||||
|
||||
from pylint.epylint import py_run
|
||||
@@ -232,18 +233,21 @@ def _run_pylint_stdio(pylint_executable, document, flags):
|
||||
:rtype: string
|
||||
"""
|
||||
log.debug("Calling %s with args: '%s'", pylint_executable, flags)
|
||||
- try:
|
||||
- cmd = [pylint_executable]
|
||||
- cmd.extend(flags)
|
||||
- cmd.extend(['--from-stdin', document.path])
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
- except IOError:
|
||||
- log.debug("Can't execute %s. Trying with 'python -m pylint'", pylint_executable)
|
||||
- cmd = ['python', '-m', 'pylint']
|
||||
- cmd.extend(flags)
|
||||
- cmd.extend(['--from-stdin', document.path])
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
- (stdout, stderr) = p.communicate(document.source.encode())
|
||||
+ with ExitStack() as stack:
|
||||
+ try:
|
||||
+ cmd = [pylint_executable]
|
||||
+ cmd.extend(flags)
|
||||
+ cmd.extend(['--from-stdin', document.path])
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ stack.enter_context(p)
|
||||
+ except IOError:
|
||||
+ log.debug("Can't execute %s. Trying with 'python -m pylint'", pylint_executable)
|
||||
+ cmd = ['python', '-m', 'pylint']
|
||||
+ cmd.extend(flags)
|
||||
+ cmd.extend(['--from-stdin', document.path])
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ stack.enter_context(p)
|
||||
+ (stdout, stderr) = p.communicate(document.source.encode())
|
||||
if stderr:
|
||||
log.error("Error while running pylint '%s'", stderr.decode())
|
||||
return stdout.decode()
|
||||
diff --git a/test/plugins/test_flake8_lint.py b/test/plugins/test_flake8_lint.py
|
||||
index eaabd40..4faf0dd 100644
|
||||
--- a/test/plugins/test_flake8_lint.py
|
||||
+++ b/test/plugins/test_flake8_lint.py
|
||||
@@ -21,10 +21,9 @@ def using_const():
|
||||
|
||||
|
||||
def temp_document(doc_text, workspace):
|
||||
- temp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
|
||||
- name = temp_file.name
|
||||
- temp_file.write(doc_text)
|
||||
- temp_file.close()
|
||||
+ with tempfile.NamedTemporaryFile(mode='w', delete=False) as temp_file:
|
||||
+ name = temp_file.name
|
||||
+ temp_file.write(doc_text)
|
||||
doc = Document(uris.from_fs_path(name), workspace)
|
||||
|
||||
return name, doc
|
||||
diff --git a/test/plugins/test_pylint_lint.py b/test/plugins/test_pylint_lint.py
|
||||
index f83e754..cf7a7e4 100644
|
||||
--- a/test/plugins/test_pylint_lint.py
|
||||
+++ b/test/plugins/test_pylint_lint.py
|
||||
@@ -28,10 +28,9 @@ def hello():
|
||||
@contextlib.contextmanager
|
||||
def temp_document(doc_text, workspace):
|
||||
try:
|
||||
- temp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)
|
||||
- name = temp_file.name
|
||||
- temp_file.write(doc_text)
|
||||
- temp_file.close()
|
||||
+ with tempfile.NamedTemporaryFile(mode='w', delete=False) as temp_file:
|
||||
+ name = temp_file.name
|
||||
+ temp_file.write(doc_text)
|
||||
yield Document(uris.from_fs_path(name), workspace)
|
||||
finally:
|
||||
os.remove(name)
|
||||
|
||||
From 2d980b6d99b06de827d6589a48a75c6b196b32f4 Mon Sep 17 00:00:00 2001
|
||||
From: krassowski <krassowski.michal@gmail.com>
|
||||
Date: Sun, 25 Apr 2021 22:14:53 +0100
|
||||
Subject: [PATCH 2/2] Revert the use of ExitStack, as requested
|
||||
|
||||
---
|
||||
pylsp/plugins/flake8_lint.py | 25 ++++++++++---------------
|
||||
pylsp/plugins/pylint_lint.py | 28 ++++++++++++----------------
|
||||
2 files changed, 22 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/pylsp/plugins/flake8_lint.py b/pylsp/plugins/flake8_lint.py
|
||||
index dfee5b4..03504ef 100644
|
||||
--- a/pylsp/plugins/flake8_lint.py
|
||||
+++ b/pylsp/plugins/flake8_lint.py
|
||||
@@ -5,7 +5,6 @@
|
||||
import logging
|
||||
import os.path
|
||||
import re
|
||||
-from contextlib import ExitStack
|
||||
from subprocess import Popen, PIPE
|
||||
from pylsp import hookimpl, lsp
|
||||
|
||||
@@ -66,20 +65,16 @@ def run_flake8(flake8_executable, args, document):
|
||||
)
|
||||
|
||||
log.debug("Calling %s with args: '%s'", flake8_executable, args)
|
||||
- with ExitStack() as stack:
|
||||
- try:
|
||||
- cmd = [flake8_executable]
|
||||
- cmd.extend(args)
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
- stack.enter_context(p)
|
||||
- except IOError:
|
||||
- log.debug("Can't execute %s. Trying with 'python -m flake8'", flake8_executable)
|
||||
- cmd = ['python', '-m', 'flake8']
|
||||
- cmd.extend(args)
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
- stack.enter_context(p)
|
||||
- # exit stack ensures that even if an exception happens, the process `p` will be properly terminated
|
||||
- (stdout, stderr) = p.communicate(document.source.encode())
|
||||
+ try:
|
||||
+ cmd = [flake8_executable]
|
||||
+ cmd.extend(args)
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ except IOError:
|
||||
+ log.debug("Can't execute %s. Trying with 'python -m flake8'", flake8_executable)
|
||||
+ cmd = ['python', '-m', 'flake8']
|
||||
+ cmd.extend(args)
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ (stdout, stderr) = p.communicate(document.source.encode())
|
||||
if stderr:
|
||||
log.error("Error while running flake8 '%s'", stderr.decode())
|
||||
return stdout.decode()
|
||||
diff --git a/pylsp/plugins/pylint_lint.py b/pylsp/plugins/pylint_lint.py
|
||||
index 6449cda..d5ff3db 100644
|
||||
--- a/pylsp/plugins/pylint_lint.py
|
||||
+++ b/pylsp/plugins/pylint_lint.py
|
||||
@@ -7,7 +7,6 @@
|
||||
import logging
|
||||
import sys
|
||||
import re
|
||||
-from contextlib import ExitStack
|
||||
from subprocess import Popen, PIPE
|
||||
|
||||
from pylint.epylint import py_run
|
||||
@@ -233,21 +232,18 @@ def _run_pylint_stdio(pylint_executable, document, flags):
|
||||
:rtype: string
|
||||
"""
|
||||
log.debug("Calling %s with args: '%s'", pylint_executable, flags)
|
||||
- with ExitStack() as stack:
|
||||
- try:
|
||||
- cmd = [pylint_executable]
|
||||
- cmd.extend(flags)
|
||||
- cmd.extend(['--from-stdin', document.path])
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
- stack.enter_context(p)
|
||||
- except IOError:
|
||||
- log.debug("Can't execute %s. Trying with 'python -m pylint'", pylint_executable)
|
||||
- cmd = ['python', '-m', 'pylint']
|
||||
- cmd.extend(flags)
|
||||
- cmd.extend(['--from-stdin', document.path])
|
||||
- p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
- stack.enter_context(p)
|
||||
- (stdout, stderr) = p.communicate(document.source.encode())
|
||||
+ try:
|
||||
+ cmd = [pylint_executable]
|
||||
+ cmd.extend(flags)
|
||||
+ cmd.extend(['--from-stdin', document.path])
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ except IOError:
|
||||
+ log.debug("Can't execute %s. Trying with 'python -m pylint'", pylint_executable)
|
||||
+ cmd = ['python', '-m', 'pylint']
|
||||
+ cmd.extend(flags)
|
||||
+ cmd.extend(['--from-stdin', document.path])
|
||||
+ p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE) # pylint: disable=consider-using-with
|
||||
+ (stdout, stderr) = p.communicate(document.source.encode())
|
||||
if stderr:
|
||||
log.error("Error while running pylint '%s'", stderr.decode())
|
||||
return stdout.decode()
|
||||
@@ -0,0 +1,14 @@
|
||||
diff --git a/test/plugins/test_folding.py b/test/plugins/test_folding.py
|
||||
index 57d6e2e..cef4583 100644
|
||||
--- a/test/plugins/test_folding.py
|
||||
+++ b/test/plugins/test_folding.py
|
||||
@@ -147,9 +147,6 @@ def test_folding(workspace):
|
||||
{'startLine': 62, 'endLine': 63},
|
||||
{'startLine': 64, 'endLine': 65},
|
||||
{'startLine': 67, 'endLine': 68}]
|
||||
- if sys.version_info[:2] >= (3, 9):
|
||||
- # the argument list of the decorator is also folded in Python >= 3.9
|
||||
- expected.insert(4, {'startLine': 9, 'endLine': 10})
|
||||
|
||||
assert ranges == expected
|
||||
|
||||
20
dev-python/python-lsp-server/metadata.xml
Normal file
20
dev-python/python-lsp-server/metadata.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person" proxied="yes">
|
||||
<email>andrewammerlaan@riseup.net</email>
|
||||
<name>Andrew Ammerlaan</name>
|
||||
</maintainer>
|
||||
<maintainer type="project" proxied="proxy">
|
||||
<email>proxy-maint@gentoo.org</email>
|
||||
<name>Proxy Maintainers</name>
|
||||
</maintainer>
|
||||
<maintainer type="project">
|
||||
<email>python@gentoo.org</email>
|
||||
<name>Python</name>
|
||||
</maintainer>
|
||||
<stabilize-allarches/>
|
||||
<upstream>
|
||||
<remote-id type="pypi">python-lsp-server</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
||||
71
dev-python/python-lsp-server/python-lsp-server-1.0.1.ebuild
Normal file
71
dev-python/python-lsp-server/python-lsp-server-1.0.1.ebuild
Normal file
@@ -0,0 +1,71 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
PYTHON_COMPAT=( python3_{7..9} )
|
||||
|
||||
DISTUTILS_USE_SETUPTOOLS=rdepend
|
||||
inherit distutils-r1 optfeature
|
||||
|
||||
DESCRIPTION="Python Language Server for the Language Server Protocol"
|
||||
HOMEPAGE="https://github.com/python-lsp/python-lsp-server"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~arm64 ~x86"
|
||||
|
||||
BDEPEND="
|
||||
test? (
|
||||
dev-python/autopep8[${PYTHON_USEDEP}]
|
||||
dev-python/flaky[${PYTHON_USEDEP}]
|
||||
>=dev-python/flake8-3.8.0[${PYTHON_USEDEP}]
|
||||
dev-python/matplotlib[${PYTHON_USEDEP}]
|
||||
>=dev-python/mccabe-0.6.0[${PYTHON_USEDEP}]
|
||||
<dev-python/mccabe-0.7.0[${PYTHON_USEDEP}]
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
dev-python/pandas[${PYTHON_USEDEP}]
|
||||
>=dev-python/pycodestyle-2.7.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/pydocstyle-2.0.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/pyflakes-2.3.0[${PYTHON_USEDEP}]
|
||||
<dev-python/pyflakes-2.4.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/pylint-2.5.0[${PYTHON_USEDEP}]
|
||||
dev-python/QtPy[gui,testlib,${PYTHON_USEDEP}]
|
||||
>=dev-python/rope-0.10.5[${PYTHON_USEDEP}]
|
||||
dev-python/yapf[${PYTHON_USEDEP}]
|
||||
)"
|
||||
|
||||
RDEPEND="
|
||||
>=dev-python/jedi-0.17.2[${PYTHON_USEDEP}]
|
||||
<dev-python/jedi-0.19.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/python-lsp-jsonrpc-1.0.0[${PYTHON_USEDEP}]
|
||||
dev-python/pluggy[${PYTHON_USEDEP}]
|
||||
>=dev-python/ujson-3[${PYTHON_USEDEP}]
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/pyls-fix-test_folding.patch"
|
||||
"${FILESDIR}/pyls-fix-test-with-pylint28.patch"
|
||||
)
|
||||
|
||||
distutils_enable_tests pytest
|
||||
|
||||
python_prepare_all() {
|
||||
# remove pytest-cov dep
|
||||
sed -i -e '0,/addopts/I!d' setup.cfg || die
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
optfeature "Automatically formats Python code to conform to the PEP 8 style guide" dev-python/autopep8
|
||||
optfeature "A wrapper around PyFlakes, pep8 & mccabe" dev-python/flake8
|
||||
optfeature "flake8 plugin: McCabe complexity checker" dev-python/mccabe
|
||||
optfeature "Python style guide checker (fka pep8)" dev-python/pycodestyle
|
||||
optfeature "Python docstring style checker" dev-python/pydocstyle
|
||||
optfeature "Passive checker for Python programs" dev-python/pyflakes
|
||||
optfeature "Python code static checker" dev-python/pylint
|
||||
optfeature "Python refactoring library" dev-python/rope
|
||||
optfeature "A formatter for Python files" dev-python/yapf
|
||||
}
|
||||
Reference in New Issue
Block a user