Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-python-lsp-server for
openSUSE:Factory checked in at 2026-11-02 16:39:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-lsp-server (Old)
and /work/SRC/openSUSE:Factory/.python-python-lsp-server.new.1255 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-python-lsp-server"
Mon Nov 2 16:39:11 2026 rev:47 rq:1392847 version:1.15.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-python-lsp-server/python-python-lsp-server.changes
2026-05-23 23:28:22.239145067 +0200
+++
/work/SRC/openSUSE:Factory/.python-python-lsp-server.new.1255/python-python-lsp-server.changes
2026-11-02 16:39:35.518296012 +0100
@@ -1,0 +2,13 @@
+Mon Oct 26 21:27:36 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 1.15.0:
+ * Add compatibility with Jedi 0.20, which comes with official
+ support for Python 3.14.
+ * Issue 712 - Compatibility with Jedi 0.20
+ * Issue 705 - ValueError when opening notebooks on UNC network
+ shares
+ * Issue 623 - TypeError in definitions when handling line and
+ column values
+- drop compatibility_with_current_jedi.patch (upstream)
+
+-------------------------------------------------------------------
Old:
----
compatibility_with_current_jedi.patch
python_lsp_server-1.14.0.tar.gz
New:
----
python_lsp_server-1.15.0.tar.gz
----------(Old B)----------
Old: column values
- drop compatibility_with_current_jedi.patch (upstream)
----------(Old E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-python-lsp-server.spec ++++++
--- /var/tmp/diff_new_pack.nD03Xz/_old 2026-11-02 16:39:37.068360528 +0100
+++ /var/tmp/diff_new_pack.nD03Xz/_new 2026-11-02 16:39:37.071360653 +0100
@@ -24,19 +24,16 @@
%{?sle15_python_module_pythons}
Name: python-python-lsp-server
-Version: 1.14.0
+Version: 1.15.0
Release: 0
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
Patch1: unpin.patch
-# PATCH-FIX-UPSTREAM compatibility_with_current_jedi.patch
gh#python-lsp/python-lsp-server!711 [email protected]
-# make python-lsp-server compatible with the current jedi 0.20.*
-Patch2: compatibility_with_current_jedi.patch
BuildRequires: %{python_module base >= 3.9}
BuildRequires: %{python_module pip}
-BuildRequires: %{python_module setuptools >= 61.2}
+BuildRequires: %{python_module setuptools >= 69.0.0}
BuildRequires: %{python_module setuptools_scm >= 3.4.3}
BuildRequires: %{python_module wheel}
BuildRequires: python-rpm-macros >= 20210628
@@ -53,7 +50,7 @@
BuildRequires: %{python_module pandas}
BuildRequires: %{python_module pluggy}
BuildRequires: %{python_module pydocstyle >= 6.3.0 with %python-pydocstyle <
6.4.0}
-BuildRequires: %{python_module pylint >= 3.1 with %python-pylint < 4.1}
+BuildRequires: %{python_module pylint >= 3.1}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module python-lsp-jsonrpc >= 1.1.0 with
%python-python-lsp-jsonrpc < 2}
BuildRequires: %{python_module rope >= 1.2.0}
@@ -63,9 +60,6 @@
BuildRequires: %{python_module yapf >= 0.33}
# flake8 is special, see below
BuildRequires: %{python_module flake8 >= 7.2 with %python-flake8 < 8}
-BuildRequires: %{python_module mccabe >= 0.7.0 with %python-mccabe < 0.8.0}
-BuildRequires: %{python_module pycodestyle >= 2.14.0 with %python-pycodestyle
< 2.15.0}
-BuildRequires: %{python_module pyflakes >= 3.4.0 with %python-pyflakes <
3.5.0}
# /SECTION
BuildRequires: fdupes
Requires: python-black
@@ -105,18 +99,15 @@
%package all
Summary: The python-lsp-server[all] extra
Requires: python-autopep8 >= 2.0.4
+Requires: python-pylint >= 3.1
Requires: python-python-lsp-server = %{version}-%{release}
Requires: python-rope >= 1.11.0
Requires: python-yapf >= 0.33
Requires: (python-pydocstyle >= 6.3.0 with python-pydocstyle < 6.4.0)
-Requires: (python-pylint >= 3.1 with python-pylint < 4.1)
Requires: (python-whatthepatch >= 1.0.2 with python-whatthepatch < 2)
# Let's bump this in sync with flake8 and ignore pylsp upstream being still
behind
#
https://flake8.pycqa.org/en/latest/faq.html#why-does-flake8-use-ranges-for-its-dependencies
Requires: (python-flake8 >= 7.2 with python-flake8 < 8)
-Requires: (python-mccabe >= 0.7.0 with python-mccabe < 0.8.0)
-Requires: (python-pycodestyle >= 2.14.0 with python-pycodestyle < 2.15.0)
-Requires: (python-pyflakes >= 3.3.0 with python-pyflakes < 3.5.0)
%description all
Python Language Server for the Language Server Protocol
++++++ python_lsp_server-1.14.0.tar.gz -> python_lsp_server-1.15.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/.github/workflows/static.yml
new/python_lsp_server-1.15.0/.github/workflows/static.yml
--- old/python_lsp_server-1.14.0/.github/workflows/static.yml 2025-08-26
18:34:02.000000000 +0200
+++ new/python_lsp_server-1.15.0/.github/workflows/static.yml 2026-07-18
04:35:36.000000000 +0200
@@ -22,13 +22,13 @@
OS: 'linux'
timeout-minutes: 2
steps:
- - uses: actions/cache@v4
+ - uses: actions/cache@v6
with:
path: ~/.cache/pip
key: static-pip-${{ hashFiles('pyproject.toml') }}
restore-keys: static-pip-
- - uses: actions/checkout@v4
- - uses: actions/setup-python@v5
+ - uses: actions/checkout@v7
+ - uses: actions/setup-python@v6
with:
python-version: '3.9'
architecture: 'x64'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/.github/workflows/test-linux.yml
new/python_lsp_server-1.15.0/.github/workflows/test-linux.yml
--- old/python_lsp_server-1.14.0/.github/workflows/test-linux.yml
2025-12-04 18:18:58.000000000 +0100
+++ new/python_lsp_server-1.15.0/.github/workflows/test-linux.yml
2026-07-18 04:35:36.000000000 +0200
@@ -27,13 +27,13 @@
PYTHON_VERSION: ['3.14', '3.13', '3.12', '3.11', '3.10', '3.9']
timeout-minutes: 10
steps:
- - uses: actions/cache@v4
+ - uses: actions/cache@v6
with:
path: ~/.cache/pip
key: ${{ runner.os }}-${{ matrix.PYTHON_VERSION }}-pip-${{
hashFiles('pyproject.toml') }}
restore-keys: ${{ runner.os }}-${{ matrix.PYTHON_VERSION }}-pip-
- - uses: actions/checkout@v4
- - uses: actions/setup-python@v5
+ - uses: actions/checkout@v7
+ - uses: actions/setup-python@v6
with:
python-version: ${{ matrix.PYTHON_VERSION }}
architecture: 'x64'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/.github/workflows/test-mac.yml
new/python_lsp_server-1.15.0/.github/workflows/test-mac.yml
--- old/python_lsp_server-1.14.0/.github/workflows/test-mac.yml 2025-12-04
18:18:58.000000000 +0100
+++ new/python_lsp_server-1.15.0/.github/workflows/test-mac.yml 2026-07-18
04:35:36.000000000 +0200
@@ -16,7 +16,7 @@
jobs:
build:
name: Mac Py${{ matrix.PYTHON_VERSION }}
- runs-on: macos-13
+ runs-on: macos-14
env:
CI: 'true'
OS: 'macos'
@@ -24,16 +24,16 @@
strategy:
fail-fast: false
matrix:
- PYTHON_VERSION: ['3.14', '3.12', '3.9']
+ PYTHON_VERSION: ['3.14', '3.12', '3.11']
timeout-minutes: 10
steps:
- - uses: actions/cache@v4
+ - uses: actions/cache@v6
with:
path: ~/Library/Caches/pip
key: ${{ runner.os }}-${{ matrix.PYTHON_VERSION }}-pip-${{
hashFiles('pyproject.toml') }}
restore-keys: ${{ runner.os }}-${{ matrix.PYTHON_VERSION }}-pip-
- - uses: actions/checkout@v4
- - uses: actions/setup-python@v5
+ - uses: actions/checkout@v7
+ - uses: actions/setup-python@v6
with:
python-version: ${{ matrix.PYTHON_VERSION }}
architecture: 'x64'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/.github/workflows/test-win.yml
new/python_lsp_server-1.15.0/.github/workflows/test-win.yml
--- old/python_lsp_server-1.14.0/.github/workflows/test-win.yml 2025-12-04
18:18:58.000000000 +0100
+++ new/python_lsp_server-1.15.0/.github/workflows/test-win.yml 2026-07-18
04:35:36.000000000 +0200
@@ -27,13 +27,13 @@
PYTHON_VERSION: ['3.14', '3.12', '3.9']
timeout-minutes: 10
steps:
- - uses: actions/cache@v4
+ - uses: actions/cache@v6
with:
path: ~\AppData\Local\pip\Cache
key: ${{ runner.os }}-${{ matrix.PYTHON_VERSION }}-pip-${{
hashFiles('pyproject.toml') }}
restore-keys: ${{ runner.os }}-${{ matrix.PYTHON_VERSION }}-pip-
- - uses: actions/checkout@v4
- - uses: actions/setup-python@v5
+ - uses: actions/checkout@v7
+ - uses: actions/setup-python@v6
with:
python-version: ${{ matrix.PYTHON_VERSION }}
architecture: 'x64'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/CHANGELOG.md
new/python_lsp_server-1.15.0/CHANGELOG.md
--- old/python_lsp_server-1.14.0/CHANGELOG.md 2025-12-06 17:09:18.000000000
+0100
+++ new/python_lsp_server-1.15.0/CHANGELOG.md 2026-07-27 20:23:27.000000000
+0200
@@ -1,5 +1,35 @@
# History of changes
+## Version 1.15.0 (2026/07/27)
+
+### New features
+* Add compatibility with Jedi 0.20, which comes with official support for
+ Python 3.14.
+
+### Issues Closed
+
+* [Issue 712](https://github.com/python-lsp/python-lsp-server/issues/712) -
Compatibility with Jedi 0.20 ([PR
718](https://github.com/python-lsp/python-lsp-server/pull/718) by
[@ccordoba12](https://github.com/ccordoba12))
+* [Issue 705](https://github.com/python-lsp/python-lsp-server/issues/705) -
ValueError when opening notebooks on UNC network shares ([PR
708](https://github.com/python-lsp/python-lsp-server/pull/708) by
[@meitham](https://github.com/meitham))
+* [Issue 623](https://github.com/python-lsp/python-lsp-server/issues/623) -
TypeError in definitions when handling line and column values ([PR
715](https://github.com/python-lsp/python-lsp-server/pull/715) by
[@metheoryt](https://github.com/metheoryt))
+
+In this release 3 issues were closed.
+
+### Pull Requests Merged
+
+* [PR 718](https://github.com/python-lsp/python-lsp-server/pull/718) - Add
support for Jedi 0.20, by [@ccordoba12](https://github.com/ccordoba12)
([712](https://github.com/python-lsp/python-lsp-server/issues/712))
+* [PR 717](https://github.com/python-lsp/python-lsp-server/pull/717) - Fix
extra backtick in Readme, by [@deeferentleeg](https://github.com/deeferentleeg)
+* [PR 716](https://github.com/python-lsp/python-lsp-server/pull/716) - Use
macOS 14 runner on CI and update Github actions, by
[@ccordoba12](https://github.com/ccordoba12)
+* [PR 715](https://github.com/python-lsp/python-lsp-server/pull/715) - Fix
crash in `pylsp_definitions` due to definitions without a source position, by
[@metheoryt](https://github.com/metheoryt)
([623](https://github.com/python-lsp/python-lsp-server/issues/623))
+* [PR 709](https://github.com/python-lsp/python-lsp-server/pull/709) - Fix
`test_snippets_completion` to not depend on typeshed overload ordering, by
[@frenzymadness](https://github.com/frenzymadness)
+* [PR 708](https://github.com/python-lsp/python-lsp-server/pull/708) - Fix
error when when opening notebooks on UNC network shares, by
[@meitham](https://github.com/meitham)
([705](https://github.com/python-lsp/python-lsp-server/issues/705))
+* [PR 703](https://github.com/python-lsp/python-lsp-server/pull/703) - Fix
types of `maxComplexity` and `line_length`, by
[@krassowski](https://github.com/krassowski)
+* [PR 682](https://github.com/python-lsp/python-lsp-server/pull/682) - Prefer
parent uri when matching uri, by [@mnauw](https://github.com/mnauw)
+* [PR 676](https://github.com/python-lsp/python-lsp-server/pull/676) -
Continue on name-defined diagnostics provided by Mypy on autoimport, by
[@LarsMichelsen](https://github.com/LarsMichelsen)
+
+In this release 9 pull requests were closed.
+
+----
+
## Version 1.14.0 (2025/12/06)
### New features
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/CONFIGURATION.md
new/python_lsp_server-1.15.0/CONFIGURATION.md
--- old/python_lsp_server-1.14.0/CONFIGURATION.md 2025-12-06
16:53:29.000000000 +0100
+++ new/python_lsp_server-1.15.0/CONFIGURATION.md 2026-07-18
04:18:04.000000000 +0200
@@ -78,6 +78,6 @@
| `pylsp.rope.ropeFolder` | `array` of unique `string` items | The name of the
folder in which rope stores project configurations and data. Pass `null` for
not using such a folder at all. | `null` |
| `pylsp.signature.formatter` | `string` (one of: `'black'`, `'ruff'`, `None`)
| Formatter to use for reformatting signatures in docstrings. | `"black"` |
| `pylsp.signature.include_docstring` | `boolean` | Include signature
docstring. | `true` |
-| `pylsp.signature.line_length` | `number` | Maximum line length in
signatures. | `88` |
+| `pylsp.signature.line_length` | `integer` | Maximum line length in
signatures. | `88` |
This documentation was generated from `pylsp/config/schema.json`. Please do
not edit this file directly.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/PKG-INFO
new/python_lsp_server-1.15.0/PKG-INFO
--- old/python_lsp_server-1.14.0/PKG-INFO 2025-12-06 17:11:39.302111900
+0100
+++ new/python_lsp_server-1.15.0/PKG-INFO 2026-07-27 20:25:39.443222800
+0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: python-lsp-server
-Version: 1.14.0
+Version: 1.15.0
Summary: Python Language Server for the Language Server Protocol
Author: Python Language Server Contributors
License-Expression: MIT
@@ -10,7 +10,7 @@
License-File: LICENSE
Requires-Dist: docstring-to-markdown
Requires-Dist: importlib_metadata>=4.8.3; python_version < "3.10"
-Requires-Dist: jedi<0.20.0,>=0.17.2
+Requires-Dist: jedi<0.21.0,>=0.17.2
Requires-Dist: pluggy>=1.0.0
Requires-Dist: python-lsp-jsonrpc<2.0.0,>=1.1.0
Requires-Dist: ujson>=3.0.0
@@ -130,7 +130,7 @@
```
sudo pacman -S python-lsp-server
-````
+```
Only on Alpine Linux the package is named differently. You can install it
there by typing this command in your terminal:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/README.md
new/python_lsp_server-1.15.0/README.md
--- old/python_lsp_server-1.14.0/README.md 2025-08-27 00:30:25.000000000
+0200
+++ new/python_lsp_server-1.15.0/README.md 2026-07-19 18:54:44.000000000
+0200
@@ -68,7 +68,7 @@
```
sudo pacman -S python-lsp-server
-````
+```
Only on Alpine Linux the package is named differently. You can install it
there by typing this command in your terminal:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/pylsp/_utils.py
new/python_lsp_server-1.15.0/pylsp/_utils.py
--- old/python_lsp_server-1.14.0/pylsp/_utils.py 2025-12-06
16:53:29.000000000 +0100
+++ new/python_lsp_server-1.15.0/pylsp/_utils.py 2026-07-19
02:08:07.000000000 +0200
@@ -16,6 +16,8 @@
import docstring_to_markdown
import jedi
+from pylsp import IS_WIN
+
JEDI_VERSION = jedi.__version__
# Eol chars accepted by the LSP protocol
@@ -96,7 +98,13 @@
# Split the relative by directory, generate all the parent directories,
then check each of them.
# This avoids running a loop that has different base-cases for unix/windows
# e.g. /a/b and /a/b/c/d/e.py -> ['/a/b', 'c', 'd']
- dirs = [root] + os.path.relpath(os.path.dirname(path),
root).split(os.path.sep)
+ try:
+ dirs = [root] + os.path.relpath(os.path.dirname(path),
root).split(os.path.sep)
+ except ValueError:
+ # On Windows, relpath raises ValueError when path and root are on
different mounts
+ # (e.g. a UNC share root vs a drive-letter path). Nothing to find in
this case.
+ log.warning("Path %r not in %r", path, root)
+ return []
# Search each of /a/b/c, /a/b, /a
while dirs:
@@ -133,14 +141,33 @@
workspace_parts = pathlib.Path(workspace).parts
if len(workspace_parts) > len(path):
continue
+
match_len = 0
+ is_parent = True
for workspace_part, path_part in zip(workspace_parts, path):
+ # filename match is case insensitive on windows
+ # also, uris._normalize_win_path() lowercases the drive letter
+ if IS_WIN:
+ workspace_part = workspace_part.lower()
+ path_part = path_part.lower()
+
if workspace_part == path_part:
match_len += 1
+ else:
+ # give up, any subsequent match is no longer relevant
+ is_parent = False
+ break
+
+ # prefer a match that is actually a parent of uri
+ # otherwise fall back to longest matching non-parent
+ if is_parent and match_len > 0:
+ match_len += 1000
+
if match_len > 0:
if match_len > max_len:
max_len = match_len
chosen_workspace = workspace
+
return chosen_workspace
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/pylsp/_version.py
new/python_lsp_server-1.15.0/pylsp/_version.py
--- old/python_lsp_server-1.14.0/pylsp/_version.py 2025-12-06
17:11:39.000000000 +0100
+++ new/python_lsp_server-1.15.0/pylsp/_version.py 2026-07-27
20:25:39.000000000 +0200
@@ -1 +1 @@
-__version__ = "1.14.0"
+__version__ = "1.15.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/pylsp/config/schema.json
new/python_lsp_server-1.15.0/pylsp/config/schema.json
--- old/python_lsp_server-1.14.0/pylsp/config/schema.json 2025-12-06
16:53:29.000000000 +0100
+++ new/python_lsp_server-1.15.0/pylsp/config/schema.json 2026-07-18
04:18:04.000000000 +0200
@@ -91,7 +91,10 @@
"description": "List of errors and warnings to ignore (or skip)."
},
"pylsp.plugins.flake8.maxComplexity": {
- "type": "integer",
+ "type": [
+ "integer",
+ "null"
+ ],
"default": null,
"description": "Maximum allowed complexity threshold."
},
@@ -536,7 +539,7 @@
"description": "Include signature docstring."
},
"pylsp.signature.line_length": {
- "type": "number",
+ "type": "integer",
"default": 88,
"description": "Maximum line length in signatures."
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/pylsp/plugins/definition.py
new/python_lsp_server-1.15.0/pylsp/plugins/definition.py
--- old/python_lsp_server-1.14.0/pylsp/plugins/definition.py 2025-08-26
18:34:02.000000000 +0200
+++ new/python_lsp_server-1.15.0/pylsp/plugins/definition.py 2026-07-19
02:08:07.000000000 +0200
@@ -71,7 +71,10 @@
},
}
for d in definitions
- if d.is_definition() and (follow_builtin_defns or
_not_internal_definition(d))
+ if d.is_definition()
+ and d.line is not None
+ and d.column is not None
+ and (follow_builtin_defns or _not_internal_definition(d))
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/pylsp/plugins/rope_autoimport.py
new/python_lsp_server-1.15.0/pylsp/plugins/rope_autoimport.py
--- old/python_lsp_server-1.14.0/pylsp/plugins/rope_autoimport.py
2025-08-26 18:34:02.000000000 +0200
+++ new/python_lsp_server-1.15.0/pylsp/plugins/rope_autoimport.py
2026-07-19 02:08:07.000000000 +0200
@@ -337,7 +337,12 @@
log.debug(f"textDocument/codeAction: {document} {range} {context}")
code_actions = []
for diagnostic in context.get("diagnostics", []):
- if "undefined name" not in diagnostic.get("message", "").lower():
+ # Provided by flake8 and ruff (F821)
+ matched_message = "undefined name" in diagnostic.get("message",
"").lower()
+ # Provided by mypy
+ matched_code = diagnostic.get("code", "") == "name-defined"
+
+ if not matched_message and not matched_code:
continue
word = get_name_or_module(document, diagnostic)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/pyproject.toml
new/python_lsp_server-1.15.0/pyproject.toml
--- old/python_lsp_server-1.14.0/pyproject.toml 2025-12-06 16:53:29.000000000
+0100
+++ new/python_lsp_server-1.15.0/pyproject.toml 2026-07-20 16:53:59.000000000
+0200
@@ -16,7 +16,7 @@
dependencies = [
"docstring-to-markdown",
"importlib_metadata>=4.8.3;python_version<\"3.10\"",
- "jedi>=0.17.2,<0.20.0",
+ "jedi>=0.17.2,<0.21.0",
"pluggy>=1.0.0",
"python-lsp-jsonrpc>=1.1.0,<2.0.0",
"ujson>=3.0.0",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/python_lsp_server.egg-info/PKG-INFO
new/python_lsp_server-1.15.0/python_lsp_server.egg-info/PKG-INFO
--- old/python_lsp_server-1.14.0/python_lsp_server.egg-info/PKG-INFO
2025-12-06 17:11:39.000000000 +0100
+++ new/python_lsp_server-1.15.0/python_lsp_server.egg-info/PKG-INFO
2026-07-27 20:25:39.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: python-lsp-server
-Version: 1.14.0
+Version: 1.15.0
Summary: Python Language Server for the Language Server Protocol
Author: Python Language Server Contributors
License-Expression: MIT
@@ -10,7 +10,7 @@
License-File: LICENSE
Requires-Dist: docstring-to-markdown
Requires-Dist: importlib_metadata>=4.8.3; python_version < "3.10"
-Requires-Dist: jedi<0.20.0,>=0.17.2
+Requires-Dist: jedi<0.21.0,>=0.17.2
Requires-Dist: pluggy>=1.0.0
Requires-Dist: python-lsp-jsonrpc<2.0.0,>=1.1.0
Requires-Dist: ujson>=3.0.0
@@ -130,7 +130,7 @@
```
sudo pacman -S python-lsp-server
-````
+```
Only on Alpine Linux the package is named differently. You can install it
there by typing this command in your terminal:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/python_lsp_server.egg-info/SOURCES.txt
new/python_lsp_server-1.15.0/python_lsp_server.egg-info/SOURCES.txt
--- old/python_lsp_server-1.14.0/python_lsp_server.egg-info/SOURCES.txt
2025-12-06 17:11:39.000000000 +0100
+++ new/python_lsp_server-1.15.0/python_lsp_server.egg-info/SOURCES.txt
2026-07-27 20:25:39.000000000 +0200
@@ -67,6 +67,8 @@
python_lsp_server.egg-info/dependency_links.txt
python_lsp_server.egg-info/entry_points.txt
python_lsp_server.egg-info/requires.txt
+python_lsp_server.egg-info/scm_file_list.json
+python_lsp_server.egg-info/scm_version.json
python_lsp_server.egg-info/top_level.txt
scripts/jsonschema2md.py
scripts/circle/pypi.sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/python_lsp_server.egg-info/requires.txt
new/python_lsp_server-1.15.0/python_lsp_server.egg-info/requires.txt
--- old/python_lsp_server-1.14.0/python_lsp_server.egg-info/requires.txt
2025-12-06 17:11:39.000000000 +0100
+++ new/python_lsp_server-1.15.0/python_lsp_server.egg-info/requires.txt
2026-07-27 20:25:39.000000000 +0200
@@ -1,5 +1,5 @@
docstring-to-markdown
-jedi<0.20.0,>=0.17.2
+jedi<0.21.0,>=0.17.2
pluggy>=1.0.0
python-lsp-jsonrpc<2.0.0,>=1.1.0
ujson>=3.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/python_lsp_server.egg-info/scm_file_list.json
new/python_lsp_server-1.15.0/python_lsp_server.egg-info/scm_file_list.json
--- old/python_lsp_server-1.14.0/python_lsp_server.egg-info/scm_file_list.json
1970-01-01 01:00:00.000000000 +0100
+++ new/python_lsp_server-1.15.0/python_lsp_server.egg-info/scm_file_list.json
2026-07-27 20:25:39.000000000 +0200
@@ -0,0 +1,103 @@
+{
+ "files": [
+ ".git-blame-ignore-revs",
+ "SECURITY.md",
+ "MANIFEST.in",
+ ".gitignore",
+ "README.md",
+ "RELEASE.md",
+ "CONTRIBUTING.md",
+ ".coveragerc",
+ ".policy.yml",
+ "LICENSE",
+ "CHANGELOG.md",
+ ".pylintrc",
+ "CONFIGURATION.md",
+ ".gitattributes",
+ "setup.py",
+ "pyproject.toml",
+ ".github/workflows/test-win.yml",
+ ".github/workflows/static.yml",
+ ".github/workflows/test-linux.yml",
+ ".github/workflows/release.yml",
+ ".github/workflows/test-mac.yml",
+ "docs/autoimport.md",
+ "scripts/jsonschema2md.py",
+ "scripts/circle/pypi.sh",
+ ".well-known/funding-manifest-urls",
+ "pylsp/text_edit.py",
+ "pylsp/py.typed",
+ "pylsp/python_lsp.py",
+ "pylsp/workspace.py",
+ "pylsp/hookspecs.py",
+ "pylsp/uris.py",
+ "pylsp/__init__.py",
+ "pylsp/__main__.py",
+ "pylsp/_utils.py",
+ "pylsp/lsp.py",
+ "pylsp/config/source.py",
+ "pylsp/config/config.py",
+ "pylsp/config/flake8_conf.py",
+ "pylsp/config/pycodestyle_conf.py",
+ "pylsp/config/__init__.py",
+ "pylsp/config/schema.json",
+ "pylsp/plugins/preload_imports.py",
+ "pylsp/plugins/rope_autoimport.py",
+ "pylsp/plugins/symbols.py",
+ "pylsp/plugins/pylint_lint.py",
+ "pylsp/plugins/references.py",
+ "pylsp/plugins/pyflakes_lint.py",
+ "pylsp/plugins/definition.py",
+ "pylsp/plugins/mccabe_lint.py",
+ "pylsp/plugins/folding.py",
+ "pylsp/plugins/autopep8_format.py",
+ "pylsp/plugins/hover.py",
+ "pylsp/plugins/_rope_task_handle.py",
+ "pylsp/plugins/yapf_format.py",
+ "pylsp/plugins/highlight.py",
+ "pylsp/plugins/type_definition.py",
+ "pylsp/plugins/pycodestyle_lint.py",
+ "pylsp/plugins/__init__.py",
+ "pylsp/plugins/signature.py",
+ "pylsp/plugins/jedi_completion.py",
+ "pylsp/plugins/jedi_rename.py",
+ "pylsp/plugins/pydocstyle_lint.py",
+ "pylsp/plugins/rope_completion.py",
+ "pylsp/plugins/flake8_lint.py",
+ "pylsp/plugins/_resolvers.py",
+ "test/test_uris.py",
+ "test/test_python_lsp.py",
+ "test/test_document.py",
+ "test/fixtures.py",
+ "test/__init__.py",
+ "test/test_text_edit.py",
+ "test/test_utils.py",
+ "test/conftest.py",
+ "test/test_notebook_document.py",
+ "test/test_language_server.py",
+ "test/test_workspace.py",
+ "test/test_configuration.py",
+ "test/data/publish_diagnostics_message_examples/example_2.json",
+ "test/data/publish_diagnostics_message_examples/example_1.json",
+ "test/plugins/test_symbols.py",
+ "test/plugins/test_completion.py",
+ "test/plugins/test_flake8_lint.py",
+ "test/plugins/test_pylint_lint.py",
+ "test/plugins/test_autoimport.py",
+ "test/plugins/test_autopep8_format.py",
+ "test/plugins/test_pydocstyle_lint.py",
+ "test/plugins/test_pyflakes_lint.py",
+ "test/plugins/test_signature.py",
+ "test/plugins/test_type_definition.py",
+ "test/plugins/__init__.py",
+ "test/plugins/test_hover.py",
+ "test/plugins/test_references.py",
+ "test/plugins/test_pycodestyle_lint.py",
+ "test/plugins/test_yapf_format.py",
+ "test/plugins/test_highlight.py",
+ "test/plugins/test_mccabe_lint.py",
+ "test/plugins/test_definitions.py",
+ "test/plugins/test_jedi_rename.py",
+ "test/plugins/test_folding.py"
+ ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/python_lsp_server.egg-info/scm_version.json
new/python_lsp_server-1.15.0/python_lsp_server.egg-info/scm_version.json
--- old/python_lsp_server-1.14.0/python_lsp_server.egg-info/scm_version.json
1970-01-01 01:00:00.000000000 +0100
+++ new/python_lsp_server-1.15.0/python_lsp_server.egg-info/scm_version.json
2026-07-27 20:25:39.000000000 +0200
@@ -0,0 +1,8 @@
+{
+ "tag": "1.15.0",
+ "distance": 0,
+ "node": "ga3620069a607a63ed52569fde188e9301feae93a",
+ "dirty": false,
+ "branch": "develop",
+ "node_date": "2026-07-27"
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/test/plugins/test_autoimport.py
new/python_lsp_server-1.15.0/test/plugins/test_autoimport.py
--- old/python_lsp_server-1.14.0/test/plugins/test_autoimport.py
2025-08-26 18:34:02.000000000 +0200
+++ new/python_lsp_server-1.15.0/test/plugins/test_autoimport.py
2026-07-19 02:08:07.000000000 +0200
@@ -346,3 +346,94 @@
context = {"diagnostics": [{"message": "A random message"}]}
quick_fixes = server.code_actions("cell_4_uri", {}, context)
assert len(quick_fixes) == 0
+
+
+def make_mypy_context(module_name, line, character_start, character_end):
+ return {
+ "diagnostics": [
+ {
+ "range": {
+ "start": {"line": line, "character": character_start},
+ "end": {"line": line, "character": character_end},
+ },
+ "code": "name-defined",
+ }
+ ]
+ }
+
+
[email protected](IS_WIN, reason="Flaky on Windows")
+def test_autoimport_code_actions_and_completions_based_on_mypy_error(
+ client_server_pair,
+) -> None:
+ client, server = client_server_pair
+ send_initialize_request(
+ client,
+ {
+ "pylsp": {
+ "plugins": {
+ "rope_autoimport": {
+ "memory": True,
+ "enabled": True,
+ "completions": {"enabled": True},
+ },
+ }
+ }
+ },
+ )
+ with patch.object(server._endpoint, "notify") as mock_notify:
+ # Expectations:
+ # 1. We receive an autoimport suggestion for "os" in the first cell
because
+ # os is imported after that.
+ # 2. We don't receive an autoimport suggestion for "os" in the second
cell because it's
+ # already imported in the second cell.
+ # 3. We don't receive an autoimport suggestion for "os" in the third
cell because it's
+ # already imported in the second cell.
+ # 4. We receive an autoimport suggestion for "sys" because it's not
already imported.
+ # 5. If diagnostics doesn't contain "undefined name ...", we send
empty quick fix suggestions.
+ send_notebook_did_open(client, ["os", "import os\nos", "os", "sys"])
+ wait_for_condition(lambda: mock_notify.call_count >= 4)
+ # We received diagnostics messages for every cell
+ assert all(
+ "textDocument/publishDiagnostics" in c.args
+ for c in mock_notify.call_args_list
+ )
+
+ rope_autoimport_settings = server.workspace._config.plugin_settings(
+ "rope_autoimport"
+ )
+ assert rope_autoimport_settings.get("completions", {}).get("enabled",
False) is True
+ assert rope_autoimport_settings.get("memory", False) is True
+ wait_for_condition(lambda: not cache.is_blocked())
+
+ # 1.
+ quick_fixes = server.code_actions(
+ "cell_1_uri", {}, make_mypy_context("os", 0, 0, 2)
+ )
+ assert any(s for s in quick_fixes if contains_autoimport_quickfix(s, "os"))
+
+ completions = server.completions("cell_1_uri", position(0, 2)).get("items")
+ assert any(s for s in completions if contains_autoimport_completion(s,
"os"))
+
+ # 2.
+ # We don't test code actions here as in this case, there would be no code
actions sent bc
+ # there wouldn't be a diagnostics message.
+ completions = server.completions("cell_2_uri", position(1, 2)).get("items")
+ assert not any(s for s in completions if contains_autoimport_completion(s,
"os"))
+
+ # 3.
+ # Same as in 2.
+ completions = server.completions("cell_3_uri", position(0, 2)).get("items")
+ assert not any(s for s in completions if contains_autoimport_completion(s,
"os"))
+
+ # 4.
+ quick_fixes = server.code_actions("cell_4_uri", {}, make_context("sys", 0,
0, 3))
+ assert any(s for s in quick_fixes if contains_autoimport_quickfix(s,
"sys"))
+
+ completions = server.completions("cell_4_uri", position(0, 3)).get("items")
+ assert any(s for s in completions if contains_autoimport_completion(s,
"sys"))
+
+ # 5.
+ context = {"diagnostics": [{"code": "some-code"}]}
+ quick_fixes = server.code_actions("cell_4_uri", {}, context)
+ assert len(quick_fixes) == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/test/plugins/test_completion.py
new/python_lsp_server-1.15.0/test/plugins/test_completion.py
--- old/python_lsp_server-1.14.0/test/plugins/test_completion.py
2025-12-03 19:38:36.000000000 +0100
+++ new/python_lsp_server-1.15.0/test/plugins/test_completion.py
2026-07-19 02:08:07.000000000 +0200
@@ -322,7 +322,7 @@
def test_snippets_completion(config, workspace) -> None:
- doc_snippets = "from collections import defaultdict \na=defaultdict"
+ doc_snippets = "from collections import defaultdict \ndef foo(a):
pass\nfoo"
com_position = {"line": 0, "character": 35}
doc = Document(DOC_URI, workspace, doc_snippets)
config.capabilities["textDocument"] = {
@@ -332,9 +332,9 @@
completions = pylsp_jedi_completions(config, doc, com_position)
assert completions[0]["insertText"] == "defaultdict"
- com_position = {"line": 1, "character": len(doc_snippets)}
+ com_position = {"line": 2, "character": 3}
completions = pylsp_jedi_completions(config, doc, com_position)
- assert completions[0]["insertText"] == "defaultdict($0)"
+ assert completions[0]["insertText"] == "foo($0)"
assert completions[0]["insertTextFormat"] == lsp.InsertTextFormat.Snippet
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_lsp_server-1.14.0/test/plugins/test_definitions.py
new/python_lsp_server-1.15.0/test/plugins/test_definitions.py
--- old/python_lsp_server-1.14.0/test/plugins/test_definitions.py
2024-07-29 20:12:03.000000000 +0200
+++ new/python_lsp_server-1.15.0/test/plugins/test_definitions.py
2026-07-19 02:08:07.000000000 +0200
@@ -3,6 +3,8 @@
import os
+import jedi
+
from pylsp import uris
from pylsp.plugins.definition import pylsp_definitions
from pylsp.workspace import Document
@@ -173,3 +175,27 @@
assert [{"uri": module_uri, "range": def_range}] == pylsp_definitions(
config, doc, cursor_pos
)
+
+
+def test_definition_without_source_position(config, workspace, monkeypatch) ->
None:
+ # A definition jedi resolves without a source position (e.g. a compiled
+ # builtin, where line/column are None) must be dropped, not crash with
+ # `TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'`.
+ # Regression test for #623 and #624.
+ class _NoPositionName:
+ line = None
+ column = None
+ module_path = None
+ name = "compiled"
+
+ def is_definition(self) -> bool:
+ return True
+
+ monkeypatch.setattr(
+ jedi.api.Script, "goto", lambda *args, **kwargs: [_NoPositionName()]
+ )
+
+ doc = Document(DOC_URI, workspace, DOC)
+ # follow_builtin_definitions defaults to True, so the None-guard in the
+ # return comprehension is the only thing preventing the crash.
+ assert pylsp_definitions(config, doc, {"line": 3, "character": 6}) == []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_lsp_server-1.14.0/test/test_utils.py
new/python_lsp_server-1.15.0/test/test_utils.py
--- old/python_lsp_server-1.14.0/test/test_utils.py 2025-08-26
18:34:02.000000000 +0200
+++ new/python_lsp_server-1.15.0/test/test_utils.py 2026-07-19
02:08:07.000000000 +0200
@@ -197,6 +197,24 @@
]
+def test_find_parents_cross_mount(tmpdir, monkeypatch) -> None:
+ """find_parents returns [] when root and path are on different mounts
(Windows UNC)."""
+ import unittest.mock as mock
+
+ subsubdir = tmpdir.ensure_dir("subdir", "subsubdir")
+ path = subsubdir.ensure("path.py")
+
+ with mock.patch(
+ "os.path.relpath",
+ side_effect=ValueError(
+ "path is on mount 'C:', start on mount '\\\\unc\\share'"
+ ),
+ ):
+ result = _utils.find_parents(tmpdir.strpath, path.strpath,
["test.cfg"])
+
+ assert result == []
+
+
def test_merge_dicts() -> None:
assert _utils.merge_dicts(
{"a": True, "b": {"x": 123, "y": {"hello": "world"}}},
++++++ unpin.patch ++++++
--- /var/tmp/diff_new_pack.nD03Xz/_old 2026-11-02 16:39:37.382373598 +0100
+++ /var/tmp/diff_new_pack.nD03Xz/_new 2026-11-02 16:39:37.395374139 +0100
@@ -2,44 +2,59 @@
pyproject.toml | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
-Index: python_lsp_server-1.14.0/pyproject.toml
+Index: python_lsp_server-1.15.0/pyproject.toml
===================================================================
---- python_lsp_server-1.14.0.orig/pyproject.toml 2025-12-06
16:53:29.000000000 +0100
-+++ python_lsp_server-1.14.0/pyproject.toml 2026-05-22 23:48:26.408166837
+0200
-@@ -16,7 +16,7 @@
+--- python_lsp_server-1.15.0.orig/pyproject.toml
++++ python_lsp_server-1.15.0/pyproject.toml
+@@ -16,7 +16,7 @@ requires-python = ">=3.9"
dependencies = [
"docstring-to-markdown",
"importlib_metadata>=4.8.3;python_version<\"3.10\"",
-- "jedi>=0.17.2,<0.20.0",
+- "jedi>=0.17.2,<0.21.0",
+ "jedi>=0.17.2",
"pluggy>=1.0.0",
"python-lsp-jsonrpc>=1.1.0,<2.0.0",
"ujson>=3.0.0",
-@@ -29,18 +29,18 @@
+@@ -29,24 +29,24 @@ Homepage = "https://github.com/python-ls
[project.optional-dependencies]
all = [
- "autopep8>=2.0.4,<2.1.0",
- "flake8>=7.1,<8",
-+ "autopep8>=2.0.4",
-+ "flake8>=7.2,<8",
- "mccabe>=0.7.0,<0.8.0",
+- "mccabe>=0.7.0,<0.8.0",
- "pycodestyle>=2.12.0,<2.13.0",
-+ "pycodestyle>=2.14.0,<2.15.0",
- "pydocstyle>=6.3.0,<6.4.0",
+- "pydocstyle>=6.3.0,<6.4.0",
- "pyflakes>=3.2.0,<3.3.0",
-+ "pyflakes>=3.4.0,<3.5.0",
- "pylint>=3.1,<4.1.0",
+- "pylint>=3.1,<4.1.0",
++ "autopep8>=2.0.4",
++ "flake8>=7.2",
++ "mccabe>=0.7.0",
++ "pycodestyle>=2.14.0",
++ "pydocstyle>=6.3.0",
++ "pyflakes>=3.4.0",
++ "pylint>=3.1",
"rope>=1.11.0",
"yapf>=0.33.0",
"whatthepatch>=1.0.2,<2.0.0"
]
-autopep8 = ["autopep8>=2.0.4,<2.1.0"]
+-flake8 = ["flake8>=7.1,<8"]
+-mccabe = ["mccabe>=0.7.0,<0.8.0"]
+-pycodestyle = ["pycodestyle>=2.12.0,<2.13.0"]
+-pydocstyle = ["pydocstyle>=6.3.0,<6.4.0"]
+-pyflakes = ["pyflakes>=3.2.0,<3.3.0"]
+-pylint = ["pylint>=3.1,<4.1.0"]
+autopep8 = ["autopep8>=2.0.4"]
- flake8 = ["flake8>=7.1,<8"]
- mccabe = ["mccabe>=0.7.0,<0.8.0"]
- pycodestyle = ["pycodestyle>=2.12.0,<2.13.0"]
-@@ -183,7 +183,6 @@
++flake8 = ["flake8>=7.1"]
++mccabe = ["mccabe>=0.7.0"]
++pycodestyle = ["pycodestyle>=2.12.0"]
++pydocstyle = ["pydocstyle>=6.3.0"]
++pyflakes = ["pyflakes>=3.2.0"]
++pylint = ["pylint>=3.1"]
+ rope = ["rope>=1.11.0"]
+ yapf = ["yapf>=0.33.0", "whatthepatch>=1.0.2,<2.0.0"]
+ websockets = ["websockets>=10.3"]
+@@ -183,7 +183,6 @@ write_to_template = "__version__ = \"{ve
[tool.pytest.ini_options]
testpaths = ["test"]