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"]

Reply via email to