mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-python/python-language-server: fix py3.9, allow jedi-0.18
Signed-off-by: Andrew Ammerlaan <andrewammerlaan@riseup.net> Closes: https://github.com/gentoo/gentoo/pull/20284 Signed-off-by: Matt Turner <mattst88@gentoo.org>
This commit is contained in:
committed by
Matt Turner
parent
dd250d9468
commit
6a52187a41
@@ -0,0 +1,38 @@
|
||||
From 2d3c52c7b9debd73073650d22a3aa6e86d5491aa Mon Sep 17 00:00:00 2001
|
||||
From: Ben Greiner <code@bnavigator.de>
|
||||
Date: Thu, 1 Apr 2021 21:33:38 +0200
|
||||
Subject: [PATCH 2/2] TST: accept folding of decorator parameters in Python 3.9
|
||||
|
||||
---
|
||||
test/plugins/test_folding.py | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/test/plugins/test_folding.py b/test/plugins/test_folding.py
|
||||
index 05f0cdd8..91ac0f3b 100644
|
||||
--- a/test/plugins/test_folding.py
|
||||
+++ b/test/plugins/test_folding.py
|
||||
@@ -1,11 +1,11 @@
|
||||
# Copyright 2019 Palantir Technologies, Inc.
|
||||
|
||||
+import sys
|
||||
from textwrap import dedent
|
||||
|
||||
from pyls import uris
|
||||
-from pyls.workspace import Document
|
||||
from pyls.plugins.folding import pyls_folding_range
|
||||
-
|
||||
+from pyls.workspace import Document
|
||||
|
||||
DOC_URI = uris.from_fs_path(__file__)
|
||||
DOC = dedent("""
|
||||
@@ -146,6 +146,10 @@ 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
|
||||
|
||||
|
||||
68
dev-python/python-language-server/files/pyls-jedi-18.patch
Normal file
68
dev-python/python-language-server/files/pyls-jedi-18.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
From 40afab312a6bf0dcd620c82e59555ea2967aacdf Mon Sep 17 00:00:00 2001
|
||||
From: bnavigator <code@bnavigator.de>
|
||||
Date: Tue, 5 Jan 2021 01:17:33 +0100
|
||||
Subject: [PATCH 1/2] bump jedi compatibility: compare to Path-like object
|
||||
|
||||
---
|
||||
pyls/plugins/symbols.py | 2 +-
|
||||
setup.py | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pyls/plugins/symbols.py b/pyls/plugins/symbols.py
|
||||
index 6468dd83..69a09fe9 100644
|
||||
--- a/pyls/plugins/symbols.py
|
||||
+++ b/pyls/plugins/symbols.py
|
||||
@@ -37,7 +37,7 @@ def pyls_document_symbols(config, document):
|
||||
not sym_full_name.startswith('__main__')):
|
||||
continue
|
||||
|
||||
- if _include_def(d) and document.path == d.module_path:
|
||||
+ if _include_def(d) and os.path.samefile(document.path, d.module_path):
|
||||
tuple_range = _tuple_range(d)
|
||||
if tuple_range in exclude:
|
||||
continue
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 12782990..99d2b312 100755
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -10,7 +10,7 @@
|
||||
'configparser; python_version<"3.0"',
|
||||
'future>=0.14.0; python_version<"3"',
|
||||
'backports.functools_lru_cache; python_version<"3.2"',
|
||||
- 'jedi>=0.17.2,<0.18.0',
|
||||
+ 'jedi>=0.17.2,<0.19.0',
|
||||
'python-jsonrpc-server>=0.4.0',
|
||||
'pluggy',
|
||||
'ujson<=2.0.3 ; platform_system!="Windows" and python_version<"3.0"',
|
||||
|
||||
From e442467312fe967bff5f893b7e3f92da133182c8 Mon Sep 17 00:00:00 2001
|
||||
From: bnavigator <code@bnavigator.de>
|
||||
Date: Tue, 5 Jan 2021 01:37:25 +0100
|
||||
Subject: [PATCH 2/2] Curse you Python 2 on Windows: os.path.samefile not
|
||||
implemented
|
||||
|
||||
---
|
||||
pyls/plugins/symbols.py | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/pyls/plugins/symbols.py b/pyls/plugins/symbols.py
|
||||
index 69a09fe9..ef8e7fb8 100644
|
||||
--- a/pyls/plugins/symbols.py
|
||||
+++ b/pyls/plugins/symbols.py
|
||||
@@ -36,8 +36,14 @@ def pyls_document_symbols(config, document):
|
||||
if (not sym_full_name.startswith(module_name) and
|
||||
not sym_full_name.startswith('__main__')):
|
||||
continue
|
||||
-
|
||||
- if _include_def(d) and os.path.samefile(document.path, d.module_path):
|
||||
+ try:
|
||||
+ docismodule = os.path.samefile(document.path, d.module_path)
|
||||
+ except AttributeError:
|
||||
+ # Python 2 on Windows has no .samefile, but then these are
|
||||
+ # strings for sure
|
||||
+ docismodule = document.path == d.module_path
|
||||
+
|
||||
+ if _include_def(d) and docismodule:
|
||||
tuple_range = _tuple_range(d)
|
||||
if tuple_range in exclude:
|
||||
continue
|
||||
@@ -0,0 +1,63 @@
|
||||
From 48f5eca25c2da064bcc9aa0fefb5de525bec618f Mon Sep 17 00:00:00 2001
|
||||
From: Ben Greiner <code@bnavigator.de>
|
||||
Date: Tue, 30 Mar 2021 20:20:08 +0200
|
||||
Subject: [PATCH 1/3] don't test np.sin hover for numpy 1.20
|
||||
|
||||
---
|
||||
test/plugins/test_hover.py | 10 +++++++---
|
||||
1 file changed, 7 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/test/plugins/test_hover.py b/test/plugins/test_hover.py
|
||||
index 2302b865..f36bcb29 100644
|
||||
--- a/test/plugins/test_hover.py
|
||||
+++ b/test/plugins/test_hover.py
|
||||
@@ -46,9 +46,13 @@ def test_numpy_hover(workspace):
|
||||
contents = 'NumPy\n=====\n\nProvides\n'
|
||||
assert contents in pyls_hover(doc, numpy_hov_position_3)['contents'][0]
|
||||
|
||||
- contents = 'Trigonometric sine, element-wise.\n\n'
|
||||
- assert contents in pyls_hover(
|
||||
- doc, numpy_sin_hov_position)['contents'][0]
|
||||
+ # https://github.com/davidhalter/jedi/issues/1746
|
||||
+ import numpy as np
|
||||
+
|
||||
+ if np.lib.NumpyVersion(np.__version__) < '1.20.0':
|
||||
+ contents = 'Trigonometric sine, element-wise.\n\n'
|
||||
+ assert contents in pyls_hover(
|
||||
+ doc, numpy_sin_hov_position)['contents'][0]
|
||||
|
||||
|
||||
def test_hover(workspace):
|
||||
|
||||
From 3ee06dac069e27edf6231651ae27bff78ae8aaff Mon Sep 17 00:00:00 2001
|
||||
From: Ben Greiner <code@bnavigator.de>
|
||||
Date: Tue, 30 Mar 2021 20:21:20 +0200
|
||||
Subject: [PATCH 2/3] test snippet support with builtin instead of numpy
|
||||
|
||||
---
|
||||
test/plugins/test_completion.py | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/test/plugins/test_completion.py b/test/plugins/test_completion.py
|
||||
index 247c2c23..91df89cb 100644
|
||||
--- a/test/plugins/test_completion.py
|
||||
+++ b/test/plugins/test_completion.py
|
||||
@@ -216,14 +216,14 @@ def test_completion_with_class_objects(config, workspace):
|
||||
|
||||
|
||||
def test_snippet_parsing(config, workspace):
|
||||
- doc = 'import numpy as np\nnp.logical_and'
|
||||
- completion_position = {'line': 1, 'character': 14}
|
||||
+ doc = 'divmod'
|
||||
+ completion_position = {'line': 0, 'character': 6}
|
||||
doc = Document(DOC_URI, workspace, doc)
|
||||
config.capabilities['textDocument'] = {
|
||||
'completion': {'completionItem': {'snippetSupport': True}}}
|
||||
config.update({'plugins': {'jedi_completion': {'include_params': True}}})
|
||||
completions = pyls_jedi_completions(config, doc, completion_position)
|
||||
- out = 'logical_and(${1:x1}, ${2:x2})$0'
|
||||
+ out = 'divmod(${1:a}, ${2:b})$0'
|
||||
assert completions[0]['insertText'] == out
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
# Copyright 1999-2021 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=7
|
||||
|
||||
PYTHON_COMPAT=( python3_{7,8,9} )
|
||||
|
||||
DISTUTILS_USE_SETUPTOOLS=rdepend
|
||||
inherit distutils-r1 optfeature
|
||||
|
||||
DESCRIPTION="An implementation of the Language Server Protocol for Python"
|
||||
HOMEPAGE="https://github.com/palantir/python-language-server"
|
||||
SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64 ~arm64 ~x86"
|
||||
|
||||
BDEPEND="dev-python/versioneer[${PYTHON_USEDEP}]
|
||||
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/mock[${PYTHON_USEDEP}]
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
dev-python/pandas[${PYTHON_USEDEP}]
|
||||
>=dev-python/pycodestyle-2.6.0[${PYTHON_USEDEP}]
|
||||
<dev-python/pycodestyle-2.7.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/pydocstyle-2.0.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/pyflakes-2.2.0[${PYTHON_USEDEP}]
|
||||
<dev-python/pyflakes-2.3.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/pluggy[${PYTHON_USEDEP}]
|
||||
>=dev-python/python-jsonrpc-server-0.4.0[${PYTHON_USEDEP}]
|
||||
>=dev-python/ujson-3[${PYTHON_USEDEP}]
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}/pyls-fix-test_folding.patch"
|
||||
"${FILESDIR}/pyls-numpy-1.20.patch"
|
||||
"${FILESDIR}/pyls-jedi-18.patch"
|
||||
)
|
||||
|
||||
distutils_enable_tests pytest
|
||||
|
||||
python_prepare_all() {
|
||||
# remove pytest-cov dep
|
||||
sed -i -e '0,/addopts/I!d' setup.cfg || die
|
||||
|
||||
# allow the use of jedi-18
|
||||
sed -i -e 's/jedi<0.18.0/jedi<0.19.0/g' python_language_server.egg-info/requires.txt || 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