Hello community,
here is the log from the commit of package python-python-language-server for
openSUSE:Factory checked in at 2020-04-14 15:11:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-language-server (Old)
and /work/SRC/openSUSE:Factory/.python-python-language-server.new.2738
(New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-language-server"
Tue Apr 14 15:11:58 2020 rev:6 rq:793824 version:0.31.9
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-python-language-server/python-python-language-server.changes
2020-03-23 12:53:21.288061697 +0100
+++
/work/SRC/openSUSE:Factory/.python-python-language-server.new.2738/python-python-language-server.changes
2020-04-14 16:32:21.464153109 +0200
@@ -1,0 +2,13 @@
+Mon Apr 13 10:39:13 UTC 2020 - Benjamin Greiner <[email protected]>
+
+- add pyls-pr778-multiplerefs.patch from
gh#palantir/python-language-server#778
+
+-------------------------------------------------------------------
+Thu Apr 9 22:52:32 UTC 2020 - Benjamin Greiner <[email protected]>
+
+- update to newer jedi but deal with gh#palantir/python-language-server#744
+ pyls-pr775-jedi016.patch from gh#palantir/python-language-server#775
+ pyls-pr775-addon.patch on top of it (PR submitted)
+- reactivate the unit tests
+
+-------------------------------------------------------------------
New:
----
pyls-pr775-addon.patch
pyls-pr775-jedi016.patch
pyls-pr778-multiplerefs.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-language-server.spec ++++++
--- /var/tmp/diff_new_pack.Z2Bpun/_old 2020-04-14 16:32:21.960153487 +0200
+++ /var/tmp/diff_new_pack.Z2Bpun/_new 2020-04-14 16:32:21.964153491 +0200
@@ -23,12 +23,14 @@
Release: 0
Summary: Python Language Server for the Language Server Protocol
License: MIT
-Group: Development/Languages/Python
URL: https://github.com/palantir/python-language-server
Source:
https://files.pythonhosted.org/packages/source/p/python-language-server/python-language-server-%{version}.tar.gz
# PATCH-FIX-OPENSUSE use_newer_ujson.patch [email protected]
# Use system python3-ujson without regards which version it is
Patch0: use_newer_ujson.patch
+Patch1: pyls-pr775-jedi016.patch
+Patch2: pyls-pr775-addon.patch
+Patch3: pyls-pr778-multiplerefs.patch
BuildRequires: %{python_module PyQt5}
BuildRequires: %{python_module autopep8}
BuildRequires: %{python_module flake8}
@@ -47,7 +49,7 @@
BuildRequires: %{python_module yapf}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-Requires: python-jedi >= 0.14.1
+Requires: python-jedi >= 0.16
Requires: python-pluggy
Requires: python-python-jsonrpc-server >= 0.3.2
Requires: python-setuptools
@@ -61,7 +63,7 @@
Recommends: python-rope >= 0.10.5
BuildArch: noarch
# SECTION test requirements
-BuildRequires: %{python_module jedi >= 0.14.1}
+BuildRequires: %{python_module jedi >= 0.16}
BuildRequires: %{python_module mock}
BuildRequires: %{python_module pluggy}
BuildRequires: %{python_module pytest}
@@ -105,18 +107,25 @@
%check
# Tests are switched off ATM, because of gh#palantir/python-language-server#744
-# # Remove pytest addopts
-# rm setup.cfg
-# # One test failure on Leap 15.1 due to different pylint version
-# %%if 0%{?sle_version} == 150100 && 0%{?is_opensuse}
-# %%define skip_tests -k not 'test_syntax_error_pylint_py3'
-# %%endif
-# %%pytest %{?skip_tests}
+# Remove pytest addopts
+rm setup.cfg
+# unclean tear down
+skip_tests="test_missing_message"
+# Test failure on Leap 15.1 due to different pylint version
+%if 0%{?sle_version} == 150100 && 0%{?is_opensuse}
+ skip_tests+=" or test_syntax_error_pylint_py"
+%endif
+# unknown encoding utd-8 on python2
+%ifpython2
+ skip_tests+=" or test_references_builtin"
+%endif
+%pytest -k "not ( $skip_tests )"
%files %{python_files}
%doc README.rst
%license LICENSE
%python3_only %{_bindir}/pyls
-%{python_sitelib}/*
+%{python_sitelib}/python_language_server-%{version}-py*.egg-info
+%{python_sitelib}/pyls/
%changelog
++++++ pyls-pr775-addon.patch ++++++
diff --git a/pyls/plugins/jedi_completion.py b/pyls/plugins/jedi_completion.py
index 9106c3c..5c9c358 100644
--- a/pyls/plugins/jedi_completion.py
+++ b/pyls/plugins/jedi_completion.py
@@ -53,18 +53,22 @@ def pyls_completions(config, document, position):
try:
code_position = {}
if position:
- code_position = {'line': position['line'] + 1,
- 'column':
_utils.clip_column(position['character'], document.lines, position['line'])}
- definitions = document.jedi_script().complete(**code_position)
+ code_position = {
+ 'line': position['line'] + 1,
+ 'column': _utils.clip_column(position['character'],
+ document.lines,
+ position['line'])}
+ completions = document.jedi_script().complete(**code_position)
except AttributeError as e:
if 'CompiledObject' in str(e):
# Needed to handle missing CompiledObject attribute
# 'sub_modules_dict'
- definitions = None
+ # TODO: probably not needed for new Complete objects
+ completions = None
else:
raise e
- if not definitions:
+ if not completions:
return None
completion_capabilities = config.capabilities.get('textDocument',
{}).get('completion', {})
@@ -73,7 +77,7 @@ def pyls_completions(config, document, position):
settings = config.plugin_settings('jedi_completion',
document_path=document.path)
should_include_params = settings.get('include_params')
include_params = snippet_support and should_include_params and
use_snippets(document, position)
- return [_format_completion(signature, include_params) for d in definitions
for signature in d.get_signatures()] or None
+ return [_format_completion(c, include_params) for c in completions] or None
def is_exception_class(name):
@@ -142,9 +146,9 @@ def _format_completion(d, include_params=True):
path = path.replace('/', '\\/')
completion['insertText'] = path
- if (include_params and hasattr(d, 'params') and d.params and
- not is_exception_class(d.name)):
- positional_args = [param for param in d.params
+ sig = d.get_signatures()
+ if (include_params and sig and not is_exception_class(d.name)):
+ positional_args = [param for param in sig[0].params
if '=' not in param.description and
param.name not in {'/', '*'}]
@@ -167,8 +171,9 @@ def _format_completion(d, include_params=True):
def _label(definition):
- if definition.type in ('function', 'method') and hasattr(definition,
'params'):
- params = ', '.join([param.name for param in definition.params])
+ sig = definition.get_signatures()
+ if definition.type in ('function', 'method') and sig:
+ params = ', '.join([param.name for param in sig[0].params])
return '{}({})'.format(definition.name, params)
return definition.name
diff --git a/pyls/workspace.py b/pyls/workspace.py
index f5c7237..05ca83e 100644
--- a/pyls/workspace.py
+++ b/pyls/workspace.py
@@ -213,16 +213,9 @@ class Document(object):
return m_start[0] + m_end[-1]
def jedi_names(self, all_scopes=False, definitions=True, references=False):
- environment_path = None
- if self._config:
- jedi_settings = self._config.plugin_settings('jedi',
document_path=self.path)
- environment_path = jedi_settings.get('environment')
- environment = self.get_enviroment(environment_path) if
environment_path else None
-
- return jedi.api.names(
- source=self.source, path=self.path, all_scopes=all_scopes,
- definitions=definitions, references=references,
environment=environment,
- )
+ script = self.jedi_script()
+ return script.get_names(all_scopes=all_scopes, definitions=definitions,
+ references=references)
def jedi_script(self, position=None):
extra_paths = []
++++++ pyls-pr775-jedi016.patch ++++++
diff --git a/pyls/plugins/jedi_completion.py b/pyls/plugins/jedi_completion.py
index caa543a1..9106c3c1 100644
--- a/pyls/plugins/jedi_completion.py
+++ b/pyls/plugins/jedi_completion.py
@@ -51,7 +51,11 @@
@hookimpl
def pyls_completions(config, document, position):
try:
- definitions = document.jedi_script(position).completions()
+ code_position = {}
+ if position:
+ code_position = {'line': position['line'] + 1,
+ 'column':
_utils.clip_column(position['character'], document.lines, position['line'])}
+ definitions = document.jedi_script().complete(**code_position)
except AttributeError as e:
if 'CompiledObject' in str(e):
# Needed to handle missing CompiledObject attribute
@@ -69,7 +73,7 @@ def pyls_completions(config, document, position):
settings = config.plugin_settings('jedi_completion',
document_path=document.path)
should_include_params = settings.get('include_params')
include_params = snippet_support and should_include_params and
use_snippets(document, position)
- return [_format_completion(d, include_params) for d in definitions] or None
+ return [_format_completion(signature, include_params) for d in definitions
for signature in d.get_signatures()] or None
def is_exception_class(name):
@@ -173,7 +177,7 @@ def _label(definition):
def _detail(definition):
try:
return definition.parent().full_name or ''
- except AttributeError:
+ except (AttributeError, TypeError):
return definition.full_name or ''
++++++ pyls-pr778-multiplerefs.patch ++++++
>From 26bc48c9f3bec3671fcc39a60e2381ba4214c638 Mon Sep 17 00:00:00 2001
From: Benjamin Greiner <[email protected]>
Date: Fri, 10 Apr 2020 00:46:03 +0200
Subject: [PATCH] fix references test
---
test/plugins/test_references.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/test/plugins/test_references.py b/test/plugins/test_references.py
index 6caab4c4..7e7cbe75 100644
--- a/test/plugins/test_references.py
+++ b/test/plugins/test_references.py
@@ -73,7 +73,7 @@ def test_references_builtin(tmp_workspace): # pylint:
disable=redefined-outer-n
doc2 = Document(doc2_uri)
refs = pyls_references(doc2, position)
- assert len(refs) == 1
+ assert len(refs) >= 1
assert refs[0]['range']['start'] == {'line': 4, 'character': 7}
assert refs[0]['range']['end'] == {'line': 4, 'character': 19}