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 2022-11-07 13:52:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-lsp-server (Old)
 and      /work/SRC/openSUSE:Factory/.python-python-lsp-server.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python-lsp-server"

Mon Nov  7 13:52:07 2022 rev:16 rq:1034140 version:1.6.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python-lsp-server/python-python-lsp-server.changes
        2022-08-28 13:12:40.592598884 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-python-lsp-server.new.1597/python-python-lsp-server.changes
      2022-11-07 13:52:12.823977707 +0100
@@ -1,0 +2,14 @@
+Sun Nov  6 15:10:39 UTC 2022 - Ben Greiner <c...@bnavigator.de>
+
+- Update to 1.6.0
+  * Migrate to MarkupContent and convert docstrings to Markdown by
+    default.
+  * Add support for flake8 version 5.
+  * Add function objects to Jedi completions.
+  * Don't include class and functions objects by default in Jedi
+    completions.
+- Drop patches
+  * python-lsp-server-advanceflake8.patch
+  * python-lsp-server-pylint-syntax-error.patch
+
+-------------------------------------------------------------------

Old:
----
  python-lsp-server-1.5.0.tar.gz
  python-lsp-server-advanceflake8.patch
  python-lsp-server-pylint-syntax-error.patch

New:
----
  python-lsp-server-1.6.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-python-lsp-server.spec ++++++
--- /var/tmp/diff_new_pack.WyDVWo/_old  2022-11-07 13:52:14.439986791 +0100
+++ /var/tmp/diff_new_pack.WyDVWo/_new  2022-11-07 13:52:14.443986813 +0100
@@ -17,16 +17,12 @@
 
 
 Name:           python-python-lsp-server
-Version:        1.5.0
+Version:        1.6.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
-# PATCH-FEATURE-UPSTREAM python-lsp-server-advanceflake8.patch 
gh#python-lsp/python-lsp-server#257
-Patch0:         python-lsp-server-advanceflake8.patch
-# PATCH-FEATURE-UPSTREAM python-lsp-server-pylint-syntax-error.patch 
gh#python-lsp/python-lsp-server#258
-Patch1:         python-lsp-server-pylint-syntax-error.patch
 BuildRequires:  %{python_module base >= 3.7}
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module setuptools >= 61.2}
@@ -35,9 +31,9 @@
 BuildRequires:  %{python_module wheel}
 BuildRequires:  python-rpm-macros >= 20210628
 # SECTION test requirements
+BuildRequires:  %{python_module docstring-to-markdown}
 BuildRequires:  %{python_module PyQt5}
 BuildRequires:  %{python_module autopep8 >= 1.6.0 with %python-autopep8 < 
1.7.0}
-# flake8 and its dependencies in a particular range, see Patch0
 BuildRequires:  %{python_module flake8 >= 5.0.0 with %python-flake8 < 5.1.0}
 BuildRequires:  %{python_module flaky}
 BuildRequires:  %{python_module jedi >= 0.17.2 with %python-jedi < 0.19.0}
@@ -55,6 +51,7 @@
 BuildRequires:  %{python_module yapf}
 # /SECTION
 BuildRequires:  fdupes
+Requires:       python-docstring-to-markdown
 Requires:       python-pluggy >= 1.0.0
 Requires:       python-python-lsp-jsonrpc >= 1.0.0
 Requires:       python-setuptools >= 39.0.0
@@ -67,7 +64,7 @@
 Suggests:       python-rope >= 0.10.5
 Suggests:       python-yapf
 Suggests:       python-whatthepatch
-# SECTION flake8 pins -- see Patch0
+# SECTION flake8 pins
 Suggests:       python-flake8 >= 5.0.0
 Conflicts:      python-flake8 >= 5.1.0
 Suggests:       python-mccabe >= 0.7.0
@@ -76,7 +73,7 @@
 Conflicts:      python-pycodestyle >= 2.10.0
 Suggests:       python-pyflakes >= 2.5.0
 Conflicts:      python-pyflakes >= 2.6.0
-# SECTION
+# /SECTION
 BuildArch:      noarch
 Requires(post): update-alternatives
 Requires(postun):update-alternatives

++++++ python-lsp-server-1.5.0.tar.gz -> python-lsp-server-1.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/CHANGELOG.md 
new/python-lsp-server-1.6.0/CHANGELOG.md
--- old/python-lsp-server-1.5.0/CHANGELOG.md    2022-07-11 04:11:31.000000000 
+0200
+++ new/python-lsp-server-1.6.0/CHANGELOG.md    2022-11-03 00:27:35.000000000 
+0100
@@ -1,5 +1,51 @@
 # History of changes
 
+## Version 1.6.0 (2022/11/02)
+
+### New features
+
+* Migrate to MarkupContent and convert docstrings to Markdown by default.
+* Add support for flake8 version 5.
+* Add function objects to Jedi completions.
+* Don't include class and functions objects by default in Jedi completions.
+
+### Issues Closed
+
+* [Issue 273](https://github.com/python-lsp/python-lsp-server/issues/273) - 
Completion result have "typeParameter" duplicates   ([PR 
274](https://github.com/python-lsp/python-lsp-server/pull/274) by 
[@airportyh](https://github.com/airportyh))
+* [Issue 265](https://github.com/python-lsp/python-lsp-server/issues/265) - 
Server warns when optional modules do not exist ([PR 
266](https://github.com/python-lsp/python-lsp-server/pull/266) by 
[@doolio](https://github.com/doolio))
+* [Issue 264](https://github.com/python-lsp/python-lsp-server/issues/264) - 
Errors in CONFIGURATION.md? ([PR 
267](https://github.com/python-lsp/python-lsp-server/pull/267) by 
[@doolio](https://github.com/doolio))
+* [Issue 263](https://github.com/python-lsp/python-lsp-server/issues/263) - 
Conflict between README and CONFIGURATION ([PR 
267](https://github.com/python-lsp/python-lsp-server/pull/267) by 
[@doolio](https://github.com/doolio))
+* [Issue 245](https://github.com/python-lsp/python-lsp-server/issues/245) - 
Add alternative ways to install python-lsp-server ([PR 
248](https://github.com/python-lsp/python-lsp-server/pull/248) by 
[@nougcat](https://github.com/nougcat))
+* [Issue 244](https://github.com/python-lsp/python-lsp-server/issues/244) - 
Add function objects to completions ([PR 
246](https://github.com/python-lsp/python-lsp-server/pull/246) by 
[@llan-ml](https://github.com/llan-ml))
+* [Issue 243](https://github.com/python-lsp/python-lsp-server/issues/243) - 
`Failed to load hook pylsp_completions: 'NoneType' object has no attribute 
'type'` when working with Numpy 1.23 ([PR 
281](https://github.com/python-lsp/python-lsp-server/pull/281) by 
[@gav451](https://github.com/gav451))
+* [Issue 22](https://github.com/python-lsp/python-lsp-server/issues/22) - 
Consider using docstring_to_markdown for markdown hover and documentation ([PR 
80](https://github.com/python-lsp/python-lsp-server/pull/80) by 
[@krassowski](https://github.com/krassowski))
+* [Issue 21](https://github.com/python-lsp/python-lsp-server/issues/21) - 
Migrate from deprecated MarkedString to MarkupContent ([PR 
80](https://github.com/python-lsp/python-lsp-server/pull/80) by 
[@krassowski](https://github.com/krassowski))
+
+In this release 9 issues were closed.
+
+### Pull Requests Merged
+
+* [PR 285](https://github.com/python-lsp/python-lsp-server/pull/285) - Don't 
include class objects by default in completions, by 
[@ccordoba12](https://github.com/ccordoba12)
+* [PR 281](https://github.com/python-lsp/python-lsp-server/pull/281) - Improve 
how Jedi handles Numpy, by [@gav451](https://github.com/gav451) 
([243](https://github.com/python-lsp/python-lsp-server/issues/243))
+* [PR 274](https://github.com/python-lsp/python-lsp-server/pull/274) - Make 
default for `include_function_objects` false, by 
[@airportyh](https://github.com/airportyh) 
([273](https://github.com/python-lsp/python-lsp-server/issues/273))
+* [PR 272](https://github.com/python-lsp/python-lsp-server/pull/272) - Include 
params only for classes and functions, by [@llan-ml](https://github.com/llan-ml)
+* [PR 267](https://github.com/python-lsp/python-lsp-server/pull/267) - Update 
the configuration schema for consistency, by 
[@doolio](https://github.com/doolio) 
([264](https://github.com/python-lsp/python-lsp-server/issues/264), 
[263](https://github.com/python-lsp/python-lsp-server/issues/263))
+* [PR 266](https://github.com/python-lsp/python-lsp-server/pull/266) - Prefer 
info log message for missing optional modules, by 
[@doolio](https://github.com/doolio) 
([265](https://github.com/python-lsp/python-lsp-server/issues/265))
+* [PR 262](https://github.com/python-lsp/python-lsp-server/pull/262) - Fix 
options not being passed to yapf format, by 
[@masad-frost](https://github.com/masad-frost)
+* [PR 261](https://github.com/python-lsp/python-lsp-server/pull/261) - PR: 
Include all symbols that Jedi reports as declared in a file when 
`add_import_symbols` is `False`, by [@ccordoba12](https://github.com/ccordoba12)
+* [PR 258](https://github.com/python-lsp/python-lsp-server/pull/258) - Fix 
pylint message in tests, by [@bnavigator](https://github.com/bnavigator)
+* [PR 257](https://github.com/python-lsp/python-lsp-server/pull/257) - Add 
support for flake8 version 5, by [@bnavigator](https://github.com/bnavigator)
+* [PR 250](https://github.com/python-lsp/python-lsp-server/pull/250) - Include 
traceback when plugin fails to load, by [@j2kun](https://github.com/j2kun)
+* [PR 248](https://github.com/python-lsp/python-lsp-server/pull/248) - Add 
more installation instructions to Readme, by 
[@nougcat](https://github.com/nougcat) 
([245](https://github.com/python-lsp/python-lsp-server/issues/245))
+* [PR 246](https://github.com/python-lsp/python-lsp-server/pull/246) - Add 
support for including function objects, by 
[@llan-ml](https://github.com/llan-ml) 
([244](https://github.com/python-lsp/python-lsp-server/issues/244))
+* [PR 242](https://github.com/python-lsp/python-lsp-server/pull/242) - Remove 
redundant wheel dep from pyproject.toml, by [@mgorny](https://github.com/mgorny)
+* [PR 241](https://github.com/python-lsp/python-lsp-server/pull/241) - Update 
release instructions to use new build mechanism, by 
[@ccordoba12](https://github.com/ccordoba12)
+* [PR 80](https://github.com/python-lsp/python-lsp-server/pull/80) - Migrate 
to MarkupContent and convert docstrings to Markdown, by 
[@krassowski](https://github.com/krassowski) 
([22](https://github.com/python-lsp/python-lsp-server/issues/22), 
[21](https://github.com/python-lsp/python-lsp-server/issues/21))
+
+In this release 16 pull requests were closed.
+
+----
+
 ## Version 1.5.0 (2022/07/10)
 
 ### New features
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/CONFIGURATION.md 
new/python-lsp-server-1.6.0/CONFIGURATION.md
--- old/python-lsp-server-1.5.0/CONFIGURATION.md        2022-07-11 
03:55:04.000000000 +0200
+++ new/python-lsp-server-1.6.0/CONFIGURATION.md        2022-11-03 
00:27:35.000000000 +0100
@@ -1,9 +1,9 @@
 # Python Language Server Configuration
-This server can be configured using `workspace/didChangeConfiguration` method. 
Each configuration option is described below:
+This server can be configured using the `workspace/didChangeConfiguration` 
method. Each configuration option is described below. Note, a value of `null` 
means that we do not set a value and thus use the plugin's default value.
 
 | **Configuration Key** | **Type** | **Description** | **Default** 
 |----|----|----|----|
-| `pylsp.configurationSources` | `array` of unique `string` (one of: 
`pycodestyle`, `pyflakes`) items | List of configuration sources to use. | 
`["pycodestyle"]` |
+| `pylsp.configurationSources` | `array` of unique `string` (one of: 
`'pycodestyle'`, `'flake8'`) items | List of configuration sources to use. | 
`["pycodestyle"]` |
 | `pylsp.plugins.autopep8.enabled` | `boolean` | Enable or disable the plugin 
(disabling required to use `yapf`). | `true` |
 | `pylsp.plugins.flake8.config` | `string` | Path to the config file that will 
be the authoritative config source. | `null` |
 | `pylsp.plugins.flake8.enabled` | `boolean` | Enable or disable the plugin. | 
`false` |
@@ -16,15 +16,17 @@
 | `pylsp.plugins.flake8.indentSize` | `integer` | Set indentation spaces. | 
`null` |
 | `pylsp.plugins.flake8.perFileIgnores` | `array` of `string` items | A 
pairing of filenames and violation codes that defines which violations to 
ignore in a particular file, for example: `["file_path.py:W305,W304"]`). | `[]` 
|
 | `pylsp.plugins.flake8.select` | `array` of unique `string` items | List of 
errors and warnings to enable. | `null` |
+| `pylsp.plugins.jedi.auto_import_modules` | `array` of `string` items | List 
of module names for jedi.settings.auto_import_modules. | `["numpy"]` |
 | `pylsp.plugins.jedi.extra_paths` | `array` of `string` items | Define extra 
paths for jedi.Script. | `[]` |
 | `pylsp.plugins.jedi.env_vars` | `object` | Define environment variables for 
jedi.Script and Jedi.names. | `null` |
 | `pylsp.plugins.jedi.environment` | `string` | Define environment for 
jedi.Script and Jedi.names. | `null` |
 | `pylsp.plugins.jedi_completion.enabled` | `boolean` | Enable or disable the 
plugin. | `true` |
 | `pylsp.plugins.jedi_completion.include_params` | `boolean` | Auto-completes 
methods and classes with tabstops for each parameter. | `true` |
-| `pylsp.plugins.jedi_completion.include_class_objects` | `boolean` | Adds 
class objects as a separate completion item. | `true` |
+| `pylsp.plugins.jedi_completion.include_class_objects` | `boolean` | Adds 
class objects as a separate completion item. | `false` |
+| `pylsp.plugins.jedi_completion.include_function_objects` | `boolean` | Adds 
function objects as a separate completion item. | `false` |
 | `pylsp.plugins.jedi_completion.fuzzy` | `boolean` | Enable fuzzy when 
requesting autocomplete. | `false` |
 | `pylsp.plugins.jedi_completion.eager` | `boolean` | Resolve documentation 
and detail eagerly. | `false` |
-| `pylsp.plugins.jedi_completion.resolve_at_most` | `number`  | How many 
labels and snippets (at most) should be resolved? | `25` |
+| `pylsp.plugins.jedi_completion.resolve_at_most` | `integer` | How many 
labels and snippets (at most) should be resolved? | `25` |
 | `pylsp.plugins.jedi_completion.cache_for` | `array` of `string` items | 
Modules for which labels and snippets should be cached. | `["pandas", "numpy", 
"tensorflow", "matplotlib"]` |
 | `pylsp.plugins.jedi_definition.enabled` | `boolean` | Enable or disable the 
plugin. | `true` |
 | `pylsp.plugins.jedi_definition.follow_imports` | `boolean` | The goto call 
will follow imports. | `true` |
@@ -36,23 +38,23 @@
 | `pylsp.plugins.jedi_symbols.all_scopes` | `boolean` | If True lists the 
names of all scopes instead of only the module namespace. | `true` |
 | `pylsp.plugins.jedi_symbols.include_import_symbols` | `boolean` | If True 
includes symbols imported from other libraries. | `true` |
 | `pylsp.plugins.mccabe.enabled` | `boolean` | Enable or disable the plugin. | 
`true` |
-| `pylsp.plugins.mccabe.threshold` | `number`  | The minimum threshold that 
triggers warnings about cyclomatic complexity. | `15` |
+| `pylsp.plugins.mccabe.threshold` | `integer` | The minimum threshold that 
triggers warnings about cyclomatic complexity. | `15` |
 | `pylsp.plugins.preload.enabled` | `boolean` | Enable or disable the plugin. 
| `true` |
 | `pylsp.plugins.preload.modules` | `array` of unique `string` items | List of 
modules to import on startup | `[]` |
 | `pylsp.plugins.pycodestyle.enabled` | `boolean` | Enable or disable the 
plugin. | `true` |
 | `pylsp.plugins.pycodestyle.exclude` | `array` of unique `string` items | 
Exclude files or directories which match these patterns. | `[]` |
 | `pylsp.plugins.pycodestyle.filename` | `array` of unique `string` items | 
When parsing directories, only check filenames matching these patterns. | `[]` |
-| `pylsp.plugins.pycodestyle.select` | `array` of unique `string` items | 
Select errors and warnings | `[]` |
+| `pylsp.plugins.pycodestyle.select` | `array` of unique `string` items | 
Select errors and warnings | `null` |
 | `pylsp.plugins.pycodestyle.ignore` | `array` of unique `string` items | 
Ignore errors and warnings | `[]` |
 | `pylsp.plugins.pycodestyle.hangClosing` | `boolean` | Hang closing bracket 
instead of matching indentation of opening bracket's line. | `null` |
-| `pylsp.plugins.pycodestyle.maxLineLength` | `number`  | Set maximum allowed 
line length. | `null` |
+| `pylsp.plugins.pycodestyle.maxLineLength` | `integer` | Set maximum allowed 
line length. | `null` |
 | `pylsp.plugins.pycodestyle.indentSize` | `integer` | Set indentation spaces. 
| `null` |
 | `pylsp.plugins.pydocstyle.enabled` | `boolean` | Enable or disable the 
plugin. | `false` |
-| `pylsp.plugins.pydocstyle.convention` | `string` (one of: `pep257`, `numpy`, 
`None`) | Choose the basic list of checked errors by specifying an existing 
convention. | `null` |
+| `pylsp.plugins.pydocstyle.convention` | `string` (one of: `'pep257'`, 
`'numpy'`, `None`) | Choose the basic list of checked errors by specifying an 
existing convention. | `null` |
 | `pylsp.plugins.pydocstyle.addIgnore` | `array` of unique `string` items | 
Ignore errors and warnings in addition to the specified convention. | `[]` |
 | `pylsp.plugins.pydocstyle.addSelect` | `array` of unique `string` items | 
Select errors and warnings in addition to the specified convention. | `[]` |
 | `pylsp.plugins.pydocstyle.ignore` | `array` of unique `string` items | 
Ignore errors and warnings | `[]` |
-| `pylsp.plugins.pydocstyle.select` | `array` of unique `string` items | 
Select errors and warnings | `[]` |
+| `pylsp.plugins.pydocstyle.select` | `array` of unique `string` items | 
Select errors and warnings | `null` |
 | `pylsp.plugins.pydocstyle.match` | `string` | Check only files that exactly 
match the given regular expression; default is to match files that don't start 
with 'test_' but end with '.py'. | `"(?!test_).*\\.py"` |
 | `pylsp.plugins.pydocstyle.matchDir` | `string` | Search only dirs that 
exactly match the given regular expression; default is to match dirs which do 
not begin with a dot. | `"[^\\.].*"` |
 | `pylsp.plugins.pyflakes.enabled` | `boolean` | Enable or disable the plugin. 
| `true` |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/PKG-INFO 
new/python-lsp-server-1.6.0/PKG-INFO
--- old/python-lsp-server-1.5.0/PKG-INFO        2022-07-11 04:17:09.427038000 
+0200
+++ new/python-lsp-server-1.6.0/PKG-INFO        2022-11-03 00:31:55.146507300 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: python-lsp-server
-Version: 1.5.0
+Version: 1.6.0
 Summary: Python Language Server for the Language Server Protocol
 Author: Python Language Server Contributors
 License: MIT
@@ -66,6 +66,34 @@
 pip install -U setuptools
 ```
 
+### Windows and Linux installation
+
+If you use Anaconda/Miniconda, you can install `python-lsp-server` using this 
conda command
+
+```
+conda install -c conda-forge python-lsp-server 
+```
+
+Python-lsp-server is available in the repos of every major Linux distribution, 
and it is usually called `python-lsp-server`.
+
+For example, here is how to install it in Debian and Debian-based 
distributions (E.g. Ubuntu, Pop!_OS, Linux Mint)
+
+```
+sudo apt-get install python-lsp-server
+```
+
+or Fedora Linux
+
+```
+sudo dnf install python-lsp-server
+```
+
+Only on Alpine Linux the package is named differently. You can install it 
there by typing this command in your terminal:
+
+```
+apk add py3-lsp-server
+```
+
 ### 3rd Party Plugins
 
 Installing these plugins will add extra functionality to the language server:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/README.md 
new/python-lsp-server-1.6.0/README.md
--- old/python-lsp-server-1.5.0/README.md       2022-07-01 23:20:01.000000000 
+0200
+++ new/python-lsp-server-1.6.0/README.md       2022-10-31 16:56:57.000000000 
+0100
@@ -43,6 +43,34 @@
 pip install -U setuptools
 ```
 
+### Windows and Linux installation
+
+If you use Anaconda/Miniconda, you can install `python-lsp-server` using this 
conda command
+
+```
+conda install -c conda-forge python-lsp-server 
+```
+
+Python-lsp-server is available in the repos of every major Linux distribution, 
and it is usually called `python-lsp-server`.
+
+For example, here is how to install it in Debian and Debian-based 
distributions (E.g. Ubuntu, Pop!_OS, Linux Mint)
+
+```
+sudo apt-get install python-lsp-server
+```
+
+or Fedora Linux
+
+```
+sudo dnf install python-lsp-server
+```
+
+Only on Alpine Linux the package is named differently. You can install it 
there by typing this command in your terminal:
+
+```
+apk add py3-lsp-server
+```
+
 ### 3rd Party Plugins
 
 Installing these plugins will add extra functionality to the language server:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/RELEASE.md 
new/python-lsp-server-1.6.0/RELEASE.md
--- old/python-lsp-server-1.5.0/RELEASE.md      2022-04-05 19:04:58.000000000 
+0200
+++ new/python-lsp-server-1.6.0/RELEASE.md      2022-11-03 00:27:35.000000000 
+0100
@@ -6,14 +6,17 @@
 
     This is necessary to run our tests before the release, so we can be sure
     everything is in order.
+
 ## To release a new version of python-lsp-server:
 
 1. git fetch upstream && git checkout upstream/master
 2. Close milestone on GitHub
 3. git clean -xfdi
 4. git tag -a vX.X.X -m "Release vX.X.X"
-5. python setup.py sdist
-6. python setup.py bdist_wheel
-7. twine check dist/*
-8. twine upload dist/*
-9. git push upstream --tags
+5. python -m pip install --upgrade pip
+6. pip install --upgrade --upgrade-strategy eager build setuptools twine wheel
+7. python -bb -X dev -W error -m build
+8. twine check --strict dist/*
+9. twine upload dist/*
+10. git push upstream --tags
+11. Create release on Github
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/_utils.py 
new/python-lsp-server-1.6.0/pylsp/_utils.py
--- old/python-lsp-server-1.5.0/pylsp/_utils.py 2022-06-07 20:04:11.000000000 
+0200
+++ new/python-lsp-server-1.6.0/pylsp/_utils.py 2022-10-31 16:56:57.000000000 
+0100
@@ -8,7 +8,9 @@
 import pathlib
 import re
 import threading
+from typing import List, Optional
 
+import docstring_to_markdown
 import jedi
 
 JEDI_VERSION = jedi.__version__
@@ -144,17 +146,84 @@
     return dict(_merge_dicts_(dict_a, dict_b))
 
 
-def format_docstring(contents):
-    """Python doc strings come in a number of formats, but LSP wants markdown.
-
-    Until we can find a fast enough way of discovering and parsing each format,
-    we can do a little better by at least preserving indentation.
+def escape_plain_text(contents: str) -> str:
+    """
+    Format plain text to display nicely in environments which do not respect 
whitespaces.
     """
     contents = contents.replace('\t', '\u00A0' * 4)
     contents = contents.replace('  ', '\u00A0' * 2)
     return contents
 
 
+def escape_markdown(contents: str) -> str:
+    """
+    Format plain text to display nicely in Markdown environment.
+    """
+    # escape markdown syntax
+    contents = re.sub(r'([\\*_#[\]])', r'\\\1', contents)
+    # preserve white space characters
+    contents = escape_plain_text(contents)
+    return contents
+
+
+def wrap_signature(signature):
+    return '```python\n' + signature + '\n```\n'
+
+
+SERVER_SUPPORTED_MARKUP_KINDS = {'markdown', 'plaintext'}
+
+
+def choose_markup_kind(client_supported_markup_kinds: List[str]):
+    """Choose a markup kind supported by both client and the server.
+
+    This gives priority to the markup kinds provided earlier on the client 
preference list.
+    """
+    for kind in client_supported_markup_kinds:
+        if kind in SERVER_SUPPORTED_MARKUP_KINDS:
+            return kind
+    return 'markdown'
+
+
+def format_docstring(contents: str, markup_kind: str, signatures: 
Optional[List[str]] = None):
+    """Transform the provided docstring into a MarkupContent object.
+
+    If `markup_kind` is 'markdown' the docstring will get converted to
+    markdown representation using `docstring-to-markdown`; if it is
+    `plaintext`, it will be returned as plain text.
+    Call signatures of functions (or equivalent code summaries)
+    provided in optional `signatures` argument will be prepended
+    to the provided contents of the docstring if given.
+    """
+    if not isinstance(contents, str):
+        contents = ''
+
+    if markup_kind == 'markdown':
+        try:
+            value = docstring_to_markdown.convert(contents)
+            return {
+                'kind': 'markdown',
+                'value': value
+            }
+        except docstring_to_markdown.UnknownFormatError:
+            # try to escape the Markdown syntax instead:
+            value = escape_markdown(contents)
+
+        if signatures:
+            value = wrap_signature('\n'.join(signatures)) + '\n\n' + value
+
+        return {
+            'kind': 'markdown',
+            'value': value
+        }
+    value = contents
+    if signatures:
+        value = '\n'.join(signatures) + '\n\n' + value
+    return {
+        'kind': 'plaintext',
+        'value': escape_plain_text(value)
+    }
+
+
 def clip_column(column, lines, line_number):
     """
     Normalise the position as per the LSP that accepts character positions > 
line length
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/_version.py 
new/python-lsp-server-1.6.0/pylsp/_version.py
--- old/python-lsp-server-1.5.0/pylsp/_version.py       2022-07-11 
04:17:09.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/_version.py       2022-11-03 
00:31:54.000000000 +0100
@@ -1 +1 @@
-__version__ = "1.5.0"
+__version__ = "1.6.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/config/config.py 
new/python-lsp-server-1.6.0/pylsp/config/config.py
--- old/python-lsp-server-1.5.0/pylsp/config/config.py  2022-06-07 
20:04:11.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/config/config.py  2022-10-31 
16:56:57.000000000 +0100
@@ -32,7 +32,7 @@
         try:
             return self._inner_hookexec(hook_name, methods, kwargs, 
firstresult)
         except Exception as e:  # pylint: disable=broad-except
-            log.warning(f"Failed to load hook {hook_name}: {e}")
+            log.warning(f"Failed to load hook {hook_name}: {e}", exc_info=True)
             return []
 
 
@@ -71,7 +71,7 @@
             try:
                 entry_point.load()
             except Exception as e:  # pylint: disable=broad-except
-                log.warning("Failed to load %s entry point '%s': %s", PYLSP, 
entry_point.name, e)
+                log.info("Failed to load %s entry point '%s': %s", PYLSP, 
entry_point.name, e)
                 self._pm.set_blocked(entry_point.name)
 
         # Load the entry points into pluggy, having blocked any failing ones
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/config/schema.json 
new/python-lsp-server-1.6.0/pylsp/config/schema.json
--- old/python-lsp-server-1.5.0/pylsp/config/schema.json        2022-07-11 
03:55:04.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/config/schema.json        2022-11-03 
00:27:35.000000000 +0100
@@ -1,7 +1,7 @@
 {
   "$schema": "http://json-schema.org/draft-07/schema#";,
   "title": "Python Language Server Configuration",
-  "description": "This server can be configured using 
`workspace/didChangeConfiguration` method. Each configuration option is 
described below:",
+  "description": "This server can be configured using the 
`workspace/didChangeConfiguration` method. Each configuration option is 
described below. Note, a value of `null` means that we do not set a value and 
thus use the plugin's default value.",
   "type": "object",
   "properties": {
     "pylsp.configurationSources": {
@@ -10,7 +10,7 @@
       "description": "List of configuration sources to use.",
       "items": {
         "type": "string",
-        "enum": ["pycodestyle", "pyflakes"]
+        "enum": ["pycodestyle", "flake8"]
       },
       "uniqueItems": true
     },
@@ -87,6 +87,14 @@
       "uniqueItems": true,
       "description": "List of errors and warnings to enable."
     },
+    "pylsp.plugins.jedi.auto_import_modules": {
+      "type": "array",
+      "default": ["numpy"],
+      "items": {
+        "type": "string"
+      },
+      "description": "List of module names for 
jedi.settings.auto_import_modules."
+    },
     "pylsp.plugins.jedi.extra_paths": {
       "type": "array",
       "default": [],
@@ -117,9 +125,14 @@
     },
     "pylsp.plugins.jedi_completion.include_class_objects": {
       "type": "boolean",
-      "default": true,
+      "default": false,
       "description": "Adds class objects as a separate completion item."
     },
+    "pylsp.plugins.jedi_completion.include_function_objects": {
+      "type": "boolean",
+      "default": false,
+      "description": "Adds function objects as a separate completion item."
+    },
     "pylsp.plugins.jedi_completion.fuzzy": {
       "type": "boolean",
       "default": false,
@@ -131,7 +144,7 @@
       "description": "Resolve documentation and detail eagerly."
     },
     "pylsp.plugins.jedi_completion.resolve_at_most": {
-      "type": "number",
+      "type": "integer",
       "default": 25,
       "description": "How many labels and snippets (at most) should be 
resolved?"
     },
@@ -194,7 +207,7 @@
       "description": "Enable or disable the plugin."
     },
     "pylsp.plugins.mccabe.threshold": {
-      "type": "number",
+      "type": "integer",
       "default": 15,
       "description": "The minimum threshold that triggers warnings about 
cyclomatic complexity."
     },
@@ -236,8 +249,8 @@
       "description": "When parsing directories, only check filenames matching 
these patterns."
     },
     "pylsp.plugins.pycodestyle.select": {
-      "type": "array",
-      "default": [],
+      "type": ["array", "null"],
+      "default": null,
       "items": {
         "type": "string"
       },
@@ -259,7 +272,7 @@
       "description": "Hang closing bracket instead of matching indentation of 
opening bracket's line."
     },
     "pylsp.plugins.pycodestyle.maxLineLength": {
-      "type": ["number", "null"],
+      "type": ["integer", "null"],
       "default": null,
       "description": "Set maximum allowed line length."
     },
@@ -307,8 +320,8 @@
       "description": "Ignore errors and warnings"
     },
     "pylsp.plugins.pydocstyle.select": {
-      "type": "array",
-      "default": [],
+      "type": ["array", "null"],
+      "default": null,
       "items": {
         "type": "string"
       },
@@ -365,12 +378,12 @@
       "description": "Enable or disable the plugin."
     },
     "pylsp.rope.extensionModules": {
-      "type": ["null", "string"],
+      "type": ["string", "null"],
       "default": null,
       "description": "Builtin and c-extension modules that are allowed to be 
imported and inspected by rope."
     },
     "pylsp.rope.ropeFolder": {
-      "type": ["null", "array"],
+      "type": ["array", "null"],
       "default": null,
       "items": {
         "type": "string"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/pylsp/plugins/autopep8_format.py 
new/python-lsp-server-1.6.0/pylsp/plugins/autopep8_format.py
--- old/python-lsp-server-1.5.0/pylsp/plugins/autopep8_format.py        
2022-04-05 19:06:16.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/plugins/autopep8_format.py        
2022-10-31 16:56:57.000000000 +0100
@@ -13,13 +13,13 @@
 
 
 @hookimpl(tryfirst=True)  # Prefer autopep8 over YAPF
-def pylsp_format_document(config, document, options=None):  # pylint: 
disable=unused-argument
+def pylsp_format_document(config, document, options):  # pylint: 
disable=unused-argument
     log.info("Formatting document %s with autopep8", document)
     return _format(config, document)
 
 
 @hookimpl(tryfirst=True)  # Prefer autopep8 over YAPF
-def pylsp_format_range(config, document, range, options=None):  # pylint: 
disable=redefined-builtin,unused-argument
+def pylsp_format_range(config, document, range, options):  # pylint: 
disable=redefined-builtin,unused-argument
     log.info("Formatting document %s in range %s with autopep8", document, 
range)
 
     # First we 'round' the range up/down to full lines only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/plugins/hover.py 
new/python-lsp-server-1.6.0/pylsp/plugins/hover.py
--- old/python-lsp-server-1.5.0/pylsp/plugins/hover.py  2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/plugins/hover.py  2022-10-31 
16:56:57.000000000 +0100
@@ -9,7 +9,7 @@
 
 
 @hookimpl
-def pylsp_hover(document, position):
+def pylsp_hover(config, document, position):
     code_position = _utils.position_to_jedi_linecolumn(document, position)
     definitions = 
document.jedi_script(use_document_path=True).infer(**code_position)
     word = document.word_at_position(position)
@@ -26,24 +26,19 @@
     if not definition:
         return {'contents': ''}
 
-    # raw docstring returns only doc, without signature
-    doc = _utils.format_docstring(definition.docstring(raw=True))
+    hover_capabilities = config.capabilities.get('textDocument', 
{}).get('hover', {})
+    supported_markup_kinds = hover_capabilities.get('contentFormat', 
['markdown'])
+    preferred_markup_kind = _utils.choose_markup_kind(supported_markup_kinds)
 
     # Find first exact matching signature
     signature = next((x.to_string() for x in definition.get_signatures()
                       if x.name == word), '')
 
-    contents = []
-    if signature:
-        contents.append({
-            'language': 'python',
-            'value': signature,
-        })
-
-    if doc:
-        contents.append(doc)
-
-    if not contents:
-        return {'contents': ''}
-
-    return {'contents': contents}
+    return {
+        'contents': _utils.format_docstring(
+            # raw docstring returns only doc, without signature
+            definition.docstring(raw=True),
+            preferred_markup_kind,
+            signatures=[signature] if signature else None
+        )
+    }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/pylsp/plugins/jedi_completion.py 
new/python-lsp-server-1.6.0/pylsp/plugins/jedi_completion.py
--- old/python-lsp-server-1.5.0/pylsp/plugins/jedi_completion.py        
2022-04-05 19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/plugins/jedi_completion.py        
2022-10-31 16:56:57.000000000 +0100
@@ -50,10 +50,14 @@
         return None
 
     completion_capabilities = config.capabilities.get('textDocument', 
{}).get('completion', {})
-    snippet_support = completion_capabilities.get('completionItem', 
{}).get('snippetSupport')
+    item_capabilities = completion_capabilities.get('completionItem', {})
+    snippet_support = item_capabilities.get('snippetSupport')
+    supported_markup_kinds = item_capabilities.get('documentationFormat', 
['markdown'])
+    preferred_markup_kind = _utils.choose_markup_kind(supported_markup_kinds)
 
     should_include_params = settings.get('include_params')
-    should_include_class_objects = settings.get('include_class_objects', True)
+    should_include_class_objects = settings.get('include_class_objects', False)
+    should_include_function_objects = settings.get('include_function_objects', 
False)
 
     max_to_resolve = settings.get('resolve_at_most', 25)
     modules_to_cache_for = settings.get('cache_for', None)
@@ -63,11 +67,13 @@
 
     include_params = snippet_support and should_include_params and 
use_snippets(document, position)
     include_class_objects = snippet_support and should_include_class_objects 
and use_snippets(document, position)
+    include_function_objects = snippet_support and 
should_include_function_objects and use_snippets(document, position)
 
     ready_completions = [
         _format_completion(
             c,
-            include_params,
+            markup_kind=preferred_markup_kind,
+            include_params=include_params if c.type in ["class", "function"] 
else False,
             resolve=resolve_eagerly,
             resolve_label_or_snippet=(i < max_to_resolve)
         )
@@ -80,6 +86,20 @@
             if c.type == 'class':
                 completion_dict = _format_completion(
                     c,
+                    markup_kind=preferred_markup_kind,
+                    include_params=False,
+                    resolve=resolve_eagerly,
+                    resolve_label_or_snippet=(i < max_to_resolve)
+                )
+                completion_dict['kind'] = lsp.CompletionItemKind.TypeParameter
+                completion_dict['label'] += ' object'
+                ready_completions.append(completion_dict)
+
+    if include_function_objects:
+        for i, c in enumerate(completions):
+            if c.type == 'function':
+                completion_dict = _format_completion(
+                    c,
                     False,
                     resolve=resolve_eagerly,
                     resolve_label_or_snippet=(i < max_to_resolve)
@@ -104,12 +124,18 @@
 
 
 @hookimpl
-def pylsp_completion_item_resolve(completion_item, document):
+def pylsp_completion_item_resolve(config, completion_item, document):
     """Resolve formatted completion for given non-resolved completion"""
     shared_data = 
document.shared_data['LAST_JEDI_COMPLETIONS'].get(completion_item['label'])
+
+    completion_capabilities = config.capabilities.get('textDocument', 
{}).get('completion', {})
+    item_capabilities = completion_capabilities.get('completionItem', {})
+    supported_markup_kinds = item_capabilities.get('documentationFormat', 
['markdown'])
+    preferred_markup_kind = _utils.choose_markup_kind(supported_markup_kinds)
+
     if shared_data:
         completion, data = shared_data
-        return _resolve_completion(completion, data)
+        return _resolve_completion(completion, data, 
markup_kind=preferred_markup_kind)
     return completion_item
 
 
@@ -163,18 +189,25 @@
             not (expr_type in _ERRORS and 'import' in code))
 
 
-def _resolve_completion(completion, d):
+def _resolve_completion(completion, d, markup_kind: str):
     # pylint: disable=broad-except
     completion['detail'] = _detail(d)
     try:
-        docs = _utils.format_docstring(d.docstring())
+        docs = _utils.format_docstring(
+            d.docstring(raw=True),
+            signatures=[
+                signature.to_string()
+                for signature in d.get_signatures()
+            ],
+            markup_kind=markup_kind
+        )
     except Exception:
         docs = ''
     completion['documentation'] = docs
     return completion
 
 
-def _format_completion(d, include_params=True, resolve=False, 
resolve_label_or_snippet=False):
+def _format_completion(d, markup_kind: str, include_params=True, 
resolve=False, resolve_label_or_snippet=False):
     completion = {
         'label': _label(d, resolve_label_or_snippet),
         'kind': _TYPE_MAP.get(d.type),
@@ -183,7 +216,7 @@
     }
 
     if resolve:
-        completion = _resolve_completion(completion, d)
+        completion = _resolve_completion(completion, d, markup_kind)
 
     if d.type == 'path':
         path = osp.normpath(d.name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/pylsp/plugins/rope_completion.py 
new/python-lsp-server-1.6.0/pylsp/plugins/rope_completion.py
--- old/python-lsp-server-1.5.0/pylsp/plugins/rope_completion.py        
2022-04-05 19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/plugins/rope_completion.py        
2022-10-31 16:56:57.000000000 +0100
@@ -4,7 +4,7 @@
 import logging
 from rope.contrib.codeassist import code_assist, sorted_proposals
 
-from pylsp import hookimpl, lsp
+from pylsp import _utils, hookimpl, lsp
 
 
 log = logging.getLogger(__name__)
@@ -16,10 +16,13 @@
     return {'plugins': {'rope_completion': {'enabled': False, 'eager': False}}}
 
 
-def _resolve_completion(completion, data):
+def _resolve_completion(completion, data, markup_kind):
     # pylint: disable=broad-except
     try:
-        doc = data.get_doc()
+        doc = _utils.format_docstring(
+            data.get_doc(),
+            markup_kind=markup_kind
+        )
     except Exception as e:
         log.debug("Failed to resolve Rope completion: %s", e)
         doc = ""
@@ -49,6 +52,11 @@
     rope_project = workspace._rope_project_builder(rope_config)
     document_rope = document._rope_resource(rope_config)
 
+    completion_capabilities = config.capabilities.get('textDocument', 
{}).get('completion', {})
+    item_capabilities = completion_capabilities.get('completionItem', {})
+    supported_markup_kinds = item_capabilities.get('documentationFormat', 
['markdown'])
+    preferred_markup_kind = _utils.choose_markup_kind(supported_markup_kinds)
+
     try:
         definitions = code_assist(rope_project, document.source, offset, 
document_rope, maxfixes=3)
     except Exception as e:  # pylint: disable=broad-except
@@ -67,7 +75,7 @@
             }
         }
         if resolve_eagerly:
-            item = _resolve_completion(item, d)
+            item = _resolve_completion(item, d, preferred_markup_kind)
         new_definitions.append(item)
 
     # most recently retrieved completion items, used for resolution
@@ -83,12 +91,18 @@
 
 
 @hookimpl
-def pylsp_completion_item_resolve(completion_item, document):
+def pylsp_completion_item_resolve(config, completion_item, document):
     """Resolve formatted completion for given non-resolved completion"""
     shared_data = 
document.shared_data['LAST_ROPE_COMPLETIONS'].get(completion_item['label'])
+
+    completion_capabilities = config.capabilities.get('textDocument', 
{}).get('completion', {})
+    item_capabilities = completion_capabilities.get('completionItem', {})
+    supported_markup_kinds = item_capabilities.get('documentationFormat', 
['markdown'])
+    preferred_markup_kind = _utils.choose_markup_kind(supported_markup_kinds)
+
     if shared_data:
         completion, data = shared_data
-        return _resolve_completion(completion, data)
+        return _resolve_completion(completion, data, preferred_markup_kind)
     return completion_item
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/plugins/signature.py 
new/python-lsp-server-1.6.0/pylsp/plugins/signature.py
--- old/python-lsp-server-1.5.0/pylsp/plugins/signature.py      2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/plugins/signature.py      2022-10-31 
16:56:57.000000000 +0100
@@ -15,28 +15,41 @@
 
 
 @hookimpl
-def pylsp_signature_help(document, position):
+def pylsp_signature_help(config, document, position):
     code_position = _utils.position_to_jedi_linecolumn(document, position)
     signatures = document.jedi_script().get_signatures(**code_position)
 
     if not signatures:
         return {'signatures': []}
 
+    signature_capabilities = config.capabilities.get('textDocument', 
{}).get('signatureHelp', {})
+    signature_information_support = 
signature_capabilities.get('signatureInformation', {})
+    supported_markup_kinds = 
signature_information_support.get('documentationFormat', ['markdown'])
+    preferred_markup_kind = _utils.choose_markup_kind(supported_markup_kinds)
+
     s = signatures[0]
 
+    docstring = s.docstring()
+
     # Docstring contains one or more lines of signature, followed by empty 
line, followed by docstring
-    function_sig_lines = (s.docstring().split('\n\n') or [''])[0].splitlines()
+    function_sig_lines = (docstring.split('\n\n') or [''])[0].splitlines()
     function_sig = ' '.join([line.strip() for line in function_sig_lines])
     sig = {
         'label': function_sig,
-        'documentation': _utils.format_docstring(s.docstring(raw=True))
+        'documentation': _utils.format_docstring(
+            s.docstring(raw=True),
+            markup_kind=preferred_markup_kind
+        )
     }
 
     # If there are params, add those
     if s.params:
         sig['parameters'] = [{
             'label': p.name,
-            'documentation': _param_docs(s.docstring(), p.name)
+            'documentation': _utils.format_docstring(
+                _param_docs(docstring, p.name),
+                markup_kind=preferred_markup_kind
+            )
         } for p in s.params]
 
     # We only return a single signature because Python doesn't allow 
overloading
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/plugins/symbols.py 
new/python-lsp-server-1.6.0/pylsp/plugins/symbols.py
--- old/python-lsp-server-1.5.0/pylsp/plugins/symbols.py        2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/plugins/symbols.py        2022-10-31 
16:56:57.000000000 +0100
@@ -38,8 +38,9 @@
 
             # Skip imported symbols comparing module names.
             sym_full_name = d.full_name
-            document_dot_path = document.dot_path
             if sym_full_name is not None:
+                document_dot_path = document.dot_path
+
                 # We assume a symbol is imported from another module to start
                 # with.
                 imported_symbol = True
@@ -48,6 +49,8 @@
                 # we need to discard it to do module comparisons below.
                 if '.' in sym_full_name:
                     sym_module_name = sym_full_name.rpartition('.')[0]
+                else:
+                    sym_module_name = sym_full_name
 
                 # This is necessary to display symbols in init files (the 
checks
                 # below fail without it).
@@ -56,9 +59,9 @@
 
                 # document_dot_path is the module where the symbol is imported,
                 # whereas sym_module_name is the one where it was declared.
-                if sym_module_name.startswith(document_dot_path):
-                    # If sym_module_name starts with the same string as 
document_dot_path,
-                    # we can safely assume it was declared in the document.
+                if document_dot_path in sym_module_name:
+                    # If document_dot_path is in sym_module_name, we can 
safely assume
+                    # that the symbol was declared in the document.
                     imported_symbol = False
                 elif sym_module_name.split('.')[0] in 
document_dot_path.split('.'):
                     # If the first module in sym_module_name is one of the 
modules in
@@ -74,10 +77,19 @@
                 # When there's no __init__.py next to a file or in one of its
                 # parents, the checks above fail. However, Jedi has a nice way
                 # to tell if the symbol was declared in the same file: if
-                # full_name starts by __main__.
+                # sym_module_name starts by __main__.
                 if imported_symbol:
                     if not sym_module_name.startswith('__main__'):
                         continue
+            else:
+                # We need to skip symbols if their definition doesn't have 
`full_name` info, they
+                # are detected as a definition, but their description (e.g. 
`class Foo`) doesn't
+                # match the code where they're detected by Jedi. This happens 
for relative imports.
+                if _include_def(d):
+                    if d.description not in d.get_line_code():
+                        continue
+                else:
+                    continue
 
         try:
             docismodule = os.path.samefile(document.path, d.module_path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/plugins/yapf_format.py 
new/python-lsp-server-1.6.0/pylsp/plugins/yapf_format.py
--- old/python-lsp-server-1.5.0/pylsp/plugins/yapf_format.py    2022-06-07 
20:04:11.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/plugins/yapf_format.py    2022-10-31 
16:56:57.000000000 +0100
@@ -16,12 +16,12 @@
 
 
 @hookimpl
-def pylsp_format_document(document, options=None):
+def pylsp_format_document(document, options):
     return _format(document, options=options)
 
 
 @hookimpl
-def pylsp_format_range(document, range, options=None):  # pylint: 
disable=redefined-builtin
+def pylsp_format_range(document, range, options):  # pylint: 
disable=redefined-builtin
     # First we 'round' the range up/down to full lines only
     range['start']['character'] = 0
     range['end']['line'] += 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pylsp/workspace.py 
new/python-lsp-server-1.6.0/pylsp/workspace.py
--- old/python-lsp-server-1.5.0/pylsp/workspace.py      2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/pylsp/workspace.py      2022-11-03 
00:27:35.000000000 +0100
@@ -14,6 +14,8 @@
 
 log = logging.getLogger(__name__)
 
+DEFAULT_AUTO_IMPORT_MODULES = ["numpy"]
+
 # TODO: this is not the best e.g. we capture numbers
 RE_START_WORD = re.compile('[A-Za-z_0-9]*$')
 RE_END_WORD = re.compile('^[A-Za-z_0-9]*')
@@ -252,6 +254,8 @@
 
         if self._config:
             jedi_settings = self._config.plugin_settings('jedi', 
document_path=self.path)
+            jedi.settings.auto_import_modules = 
jedi_settings.get('auto_import_modules',
+                                                                  
DEFAULT_AUTO_IMPORT_MODULES)
             environment_path = jedi_settings.get('environment')
             extra_paths = jedi_settings.get('extra_paths') or []
             env_vars = jedi_settings.get('env_vars')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/pyproject.toml 
new/python-lsp-server-1.6.0/pyproject.toml
--- old/python-lsp-server-1.5.0/pyproject.toml  2022-06-28 18:50:47.000000000 
+0200
+++ new/python-lsp-server-1.6.0/pyproject.toml  2022-11-03 00:27:35.000000000 
+0100
@@ -2,7 +2,7 @@
 # Copyright 2021- Python Language Server Contributors.
 
 [build-system]
-requires = ["setuptools>=61.2.0", "wheel", "setuptools_scm[toml]>=3.4.3"]
+requires = ["setuptools>=61.2.0", "setuptools_scm[toml]>=3.4.3"]
 build-backend = "setuptools.build_meta"
 
 [project]
@@ -16,6 +16,7 @@
     "jedi>=0.17.2,<0.19.0",
     "python-lsp-jsonrpc>=1.0.0",
     "pluggy>=1.0.0",
+    "docstring-to-markdown",
     "ujson>=3.0.0",
     "setuptools>=39.0.0",
 ]
@@ -27,22 +28,22 @@
 [project.optional-dependencies]
 all = [
     "autopep8>=1.6.0,<1.7.0",
-    "flake8>=4.0.0,<4.1.0",
-    "mccabe>=0.6.0,<0.7.0",
-    "pycodestyle>=2.8.0,<2.9.0",
+    "flake8>=5.0.0,<5.1.0",
+    "mccabe>=0.7.0,<0.8.0",
+    "pycodestyle>=2.9.0,<2.10.0",
     "pydocstyle>=2.0.0",
-    "pyflakes>=2.4.0,<2.5.0",
+    "pyflakes>=2.5.0,<2.6.0",
     "pylint>=2.5.0",
     "rope>=0.10.5",
     "yapf",
     "whatthepatch"
 ]
 autopep8 = ["autopep8>=1.6.0,<1.7.0"]
-flake8 = ["flake8>=4.0.0,<4.1.0"]
-mccabe = ["mccabe>=0.6.0,<0.7.0"]
-pycodestyle = ["pycodestyle>=2.8.0,<2.9.0"]
+flake8 = ["flake8>=5.0.0,<5.1.0"]
+mccabe = ["mccabe>=0.7.0,<0.8.0"]
+pycodestyle = ["pycodestyle>=2.9.0,<2.10.0"]
 pydocstyle = ["pydocstyle>=2.0.0"]
-pyflakes = ["pyflakes>=2.4.0,<2.5.0"]
+pyflakes = ["pyflakes>=2.5.0,<2.6.0"]
 pylint = ["pylint>=2.5.0"]
 rope = ["rope>0.10.5"]
 yapf = ["yapf", "whatthepatch>=1.0.2,<2.0.0"]
@@ -52,7 +53,7 @@
     "pytest",
     "pytest-cov",
     "coverage",
-    "numpy<1.23",
+    "numpy",
     "pandas",
     "matplotlib",
     "pyqt5",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/python_lsp_server.egg-info/PKG-INFO 
new/python-lsp-server-1.6.0/python_lsp_server.egg-info/PKG-INFO
--- old/python-lsp-server-1.5.0/python_lsp_server.egg-info/PKG-INFO     
2022-07-11 04:17:09.000000000 +0200
+++ new/python-lsp-server-1.6.0/python_lsp_server.egg-info/PKG-INFO     
2022-11-03 00:31:55.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: python-lsp-server
-Version: 1.5.0
+Version: 1.6.0
 Summary: Python Language Server for the Language Server Protocol
 Author: Python Language Server Contributors
 License: MIT
@@ -66,6 +66,34 @@
 pip install -U setuptools
 ```
 
+### Windows and Linux installation
+
+If you use Anaconda/Miniconda, you can install `python-lsp-server` using this 
conda command
+
+```
+conda install -c conda-forge python-lsp-server 
+```
+
+Python-lsp-server is available in the repos of every major Linux distribution, 
and it is usually called `python-lsp-server`.
+
+For example, here is how to install it in Debian and Debian-based 
distributions (E.g. Ubuntu, Pop!_OS, Linux Mint)
+
+```
+sudo apt-get install python-lsp-server
+```
+
+or Fedora Linux
+
+```
+sudo dnf install python-lsp-server
+```
+
+Only on Alpine Linux the package is named differently. You can install it 
there by typing this command in your terminal:
+
+```
+apk add py3-lsp-server
+```
+
 ### 3rd Party Plugins
 
 Installing these plugins will add extra functionality to the language server:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/python_lsp_server.egg-info/requires.txt 
new/python-lsp-server-1.6.0/python_lsp_server.egg-info/requires.txt
--- old/python-lsp-server-1.5.0/python_lsp_server.egg-info/requires.txt 
2022-07-11 04:17:09.000000000 +0200
+++ new/python-lsp-server-1.6.0/python_lsp_server.egg-info/requires.txt 
2022-11-03 00:31:55.000000000 +0100
@@ -1,16 +1,17 @@
 jedi<0.19.0,>=0.17.2
 python-lsp-jsonrpc>=1.0.0
 pluggy>=1.0.0
+docstring-to-markdown
 ujson>=3.0.0
 setuptools>=39.0.0
 
 [all]
 autopep8<1.7.0,>=1.6.0
-flake8<4.1.0,>=4.0.0
-mccabe<0.7.0,>=0.6.0
-pycodestyle<2.9.0,>=2.8.0
+flake8<5.1.0,>=5.0.0
+mccabe<0.8.0,>=0.7.0
+pycodestyle<2.10.0,>=2.9.0
 pydocstyle>=2.0.0
-pyflakes<2.5.0,>=2.4.0
+pyflakes<2.6.0,>=2.5.0
 pylint>=2.5.0
 rope>=0.10.5
 yapf
@@ -20,19 +21,19 @@
 autopep8<1.7.0,>=1.6.0
 
 [flake8]
-flake8<4.1.0,>=4.0.0
+flake8<5.1.0,>=5.0.0
 
 [mccabe]
-mccabe<0.7.0,>=0.6.0
+mccabe<0.8.0,>=0.7.0
 
 [pycodestyle]
-pycodestyle<2.9.0,>=2.8.0
+pycodestyle<2.10.0,>=2.9.0
 
 [pydocstyle]
 pydocstyle>=2.0.0
 
 [pyflakes]
-pyflakes<2.5.0,>=2.4.0
+pyflakes<2.6.0,>=2.5.0
 
 [pylint]
 pylint>=2.5.0
@@ -45,7 +46,7 @@
 pytest
 pytest-cov
 coverage
-numpy<1.23
+numpy
 pandas
 matplotlib
 pyqt5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/scripts/jsonschema2md.py 
new/python-lsp-server-1.6.0/scripts/jsonschema2md.py
--- old/python-lsp-server-1.5.0/scripts/jsonschema2md.py        2022-07-01 
23:20:01.000000000 +0200
+++ new/python-lsp-server-1.6.0/scripts/jsonschema2md.py        2022-10-31 
16:56:57.000000000 +0100
@@ -41,7 +41,7 @@
         if  option in EXTRA_DESCRIPTORS:
             parts.append(EXTRA_DESCRIPTORS[option](prop))
     if "enum" in prop:
-        allowed_values = [f"`{value}`" for value in prop["enum"]]
+        allowed_values = [f"`{value!r}`" for value in prop["enum"]]
         parts.append("(one of: " + ", ".join(allowed_values) + ")")
     return " ".join(parts)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/setup.py 
new/python-lsp-server-1.6.0/setup.py
--- old/python-lsp-server-1.5.0/setup.py        2022-06-07 20:04:11.000000000 
+0200
+++ new/python-lsp-server-1.6.0/setup.py        2022-10-31 16:56:57.000000000 
+0100
@@ -5,6 +5,7 @@
 
 from setuptools import setup, find_packages
 
+
 if __name__ == "__main__":
     setup(
         name="python-lsp-server",  # to allow GitHub dependency tracking work
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/test/__init__.py 
new/python-lsp-server-1.6.0/test/__init__.py
--- old/python-lsp-server-1.5.0/test/__init__.py        2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/test/__init__.py        2022-10-31 
16:56:57.000000000 +0100
@@ -1,13 +1,9 @@
 # Copyright 2017-2020 Palantir Technologies, Inc.
 # Copyright 2021- Python Language Server Contributors.
 
-import sys
 import pytest
 from pylsp import IS_WIN
 
-IS_PY3 = sys.version_info.major == 3
 
 unix_only = pytest.mark.skipif(IS_WIN, reason="Unix only")
 windows_only = pytest.mark.skipif(not IS_WIN, reason="Windows only")
-py3_only = pytest.mark.skipif(not IS_PY3, reason="Python3 only")
-py2_only = pytest.mark.skipif(IS_PY3, reason="Python2 only")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/test/plugins/test_autopep8_format.py 
new/python-lsp-server-1.6.0/test/plugins/test_autopep8_format.py
--- old/python-lsp-server-1.5.0/test/plugins/test_autopep8_format.py    
2022-04-05 19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/test/plugins/test_autopep8_format.py    
2022-10-31 16:56:57.000000000 +0100
@@ -41,7 +41,7 @@
 
 def test_format(config, workspace):
     doc = Document(DOC_URI, workspace, DOC)
-    res = pylsp_format_document(config, doc)
+    res = pylsp_format_document(config, doc, options=None)
 
     assert len(res) == 1
     assert res[0]['newText'] == "a = 123\n\n\ndef func():\n    pass\n"
@@ -54,7 +54,7 @@
         'start': {'line': 0, 'character': 0},
         'end': {'line': 2, 'character': 0}
     }
-    res = pylsp_format_range(config, doc, def_range)
+    res = pylsp_format_range(config, doc, def_range, options=None)
 
     assert len(res) == 1
 
@@ -64,12 +64,12 @@
 
 def test_no_change(config, workspace):
     doc = Document(DOC_URI, workspace, GOOD_DOC)
-    assert not pylsp_format_document(config, doc)
+    assert not pylsp_format_document(config, doc, options=None)
 
 
 def test_hanging_indentation(config, workspace):
     doc = Document(DOC_URI, workspace, INDENTED_DOC)
-    res = pylsp_format_document(config, doc)
+    res = pylsp_format_document(config, doc, options=None)
 
     assert len(res) == 1
     assert res[0]['newText'] == CORRECT_INDENTED_DOC
@@ -78,6 +78,6 @@
 @pytest.mark.parametrize('newline', ['\r\n', '\r'])
 def test_line_endings(config, workspace, newline):
     doc = Document(DOC_URI, workspace, f'import os;import sys{2 * 
newline}dict(a=1)')
-    res = pylsp_format_document(config, doc)
+    res = pylsp_format_document(config, doc, options=None)
 
     assert res[0]['newText'] == f'import os{newline}import sys{2 * 
newline}dict(a=1){newline}'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/test/plugins/test_completion.py 
new/python-lsp-server-1.6.0/test/plugins/test_completion.py
--- old/python-lsp-server-1.5.0/test/plugins/test_completion.py 2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/test/plugins/test_completion.py 2022-10-31 
16:56:57.000000000 +0100
@@ -160,10 +160,15 @@
     assert 'detail' not in documented_hello_item
 
     resolved_documented_hello = pylsp_jedi_completion_item_resolve(
+        doc._config,
         completion_item=documented_hello_item,
         document=doc
     )
-    assert 'Sends a polite greeting' in 
resolved_documented_hello['documentation']
+    expected_doc = {
+        'kind': 'markdown',
+        'value': '```python\ndocumented_hello()\n```\n\n\nSends a polite 
greeting'
+    }
+    assert resolved_documented_hello['documentation'] == expected_doc
 
 
 def test_jedi_completion_with_fuzzy_enabled(config, workspace):
@@ -356,6 +361,26 @@
     assert completions[1]['kind'] == lsp.CompletionItemKind.TypeParameter
 
 
+def test_completion_with_function_objects(config, workspace):
+    doc_text = 'def foobar(): pass\nfoob'
+    com_position = {'line': 1, 'character': 4}
+    doc = Document(DOC_URI, workspace, doc_text)
+    config.capabilities['textDocument'] = {
+        'completion': {'completionItem': {'snippetSupport': True}}}
+    config.update({'plugins': {'jedi_completion': {
+        'include_params': True,
+        'include_function_objects': True,
+    }}})
+    completions = pylsp_jedi_completions(config, doc, com_position)
+    assert len(completions) == 2
+
+    assert completions[0]['label'] == 'foobar()'
+    assert completions[0]['kind'] == lsp.CompletionItemKind.Function
+
+    assert completions[1]['label'] == 'foobar() object'
+    assert completions[1]['kind'] == lsp.CompletionItemKind.TypeParameter
+
+
 def test_snippet_parsing(config, workspace):
     doc = 'divmod'
     completion_position = {'line': 0, 'character': 6}
@@ -478,8 +503,8 @@
     completions = pylsp_jedi_completions(doc._config, doc, com_position)
     assert completions[0]['label'] == 'loghub'
 
-    resolved = pylsp_jedi_completion_item_resolve(completions[0], doc)
-    assert 'changelog generator' in resolved['documentation'].lower()
+    resolved = pylsp_jedi_completion_item_resolve(doc._config, completions[0], 
doc)
+    assert 'changelog generator' in resolved['documentation']['value'].lower()
 
 
 def test_document_path_completions(tmpdir, workspace_other_root_path):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-server-1.5.0/test/plugins/test_hover.py 
new/python-lsp-server-1.6.0/test/plugins/test_hover.py
--- old/python-lsp-server-1.5.0/test/plugins/test_hover.py      2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/test/plugins/test_hover.py      2022-10-31 
16:56:57.000000000 +0100
@@ -38,16 +38,16 @@
     doc = Document(DOC_URI, workspace, NUMPY_DOC)
 
     contents = ''
-    assert contents in pylsp_hover(doc, no_hov_position)['contents']
+    assert contents in pylsp_hover(doc._config, doc, 
no_hov_position)['contents']
 
     contents = 'NumPy\n=====\n\nProvides\n'
-    assert contents in pylsp_hover(doc, numpy_hov_position_1)['contents'][0]
+    assert contents in pylsp_hover(doc._config, doc, 
numpy_hov_position_1)['contents']['value']
 
     contents = 'NumPy\n=====\n\nProvides\n'
-    assert contents in pylsp_hover(doc, numpy_hov_position_2)['contents'][0]
+    assert contents in pylsp_hover(doc._config, doc, 
numpy_hov_position_2)['contents']['value']
 
     contents = 'NumPy\n=====\n\nProvides\n'
-    assert contents in pylsp_hover(doc, numpy_hov_position_3)['contents'][0]
+    assert contents in pylsp_hover(doc._config, doc, 
numpy_hov_position_3)['contents']['value']
 
     # https://github.com/davidhalter/jedi/issues/1746
     # pylint: disable=import-outside-toplevel
@@ -55,8 +55,8 @@
 
     if np.lib.NumpyVersion(np.__version__) < '1.20.0':
         contents = 'Trigonometric sine, element-wise.\n\n'
-        assert contents in pylsp_hover(
-            doc, numpy_sin_hov_position)['contents'][0]
+        assert contents in pylsp_hover(doc._config,
+                                       doc, 
numpy_sin_hov_position)['contents']['value']
 
 
 def test_hover(workspace):
@@ -67,13 +67,13 @@
 
     doc = Document(DOC_URI, workspace, DOC)
 
-    contents = [{'language': 'python', 'value': 'main()'}, 'hello world']
+    contents = {'kind': 'markdown', 'value': 
'```python\nmain()\n```\n\n\nhello world'}
 
     assert {
         'contents': contents
-    } == pylsp_hover(doc, hov_position)
+    } == pylsp_hover(doc._config, doc, hov_position)
 
-    assert {'contents': ''} == pylsp_hover(doc, no_hov_position)
+    assert {'contents': ''} == pylsp_hover(doc._config, doc, no_hov_position)
 
 
 def test_document_path_hover(workspace_other_root_path, tmpdir):
@@ -96,6 +96,6 @@
     doc = Document(doc_uri, workspace_other_root_path, doc_content)
 
     cursor_pos = {'line': 1, 'character': 3}
-    contents = pylsp_hover(doc, cursor_pos)['contents']
+    contents = pylsp_hover(doc._config, doc, cursor_pos)['contents']
 
-    assert contents[1] == 'A docstring for foo.'
+    assert 'A docstring for foo.' in contents['value']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/test/plugins/test_pylint_lint.py 
new/python-lsp-server-1.6.0/test/plugins/test_pylint_lint.py
--- old/python-lsp-server-1.5.0/test/plugins/test_pylint_lint.py        
2022-07-01 23:20:01.000000000 +0200
+++ new/python-lsp-server-1.6.0/test/plugins/test_pylint_lint.py        
2022-10-31 16:56:57.000000000 +0100
@@ -4,10 +4,8 @@
 
 import contextlib
 import os
-import sys
 import tempfile
 
-from test import py2_only, py3_only, IS_PY3
 from pylsp import lsp, uris
 from pylsp.workspace import Document
 from pylsp.plugins import pylint_lint
@@ -53,30 +51,26 @@
         assert unused_import['severity'] == lsp.DiagnosticSeverity.Warning
         assert unused_import['tags'] == [lsp.DiagnosticTag.Unnecessary]
 
-        if IS_PY3:
-            # test running pylint in stdin
-            config.plugin_settings('pylint')['executable'] = 'pylint'
-            diags = pylint_lint.pylsp_lint(config, doc, True)
-
-            msg = 'Unused import sys (unused-import)'
-            unused_import = [d for d in diags if d['message'] == msg][0]
-
-            assert unused_import['range']['start'] == {
-                'line': 0,
-                'character': 0,
-            }
-            assert unused_import['severity'] == lsp.DiagnosticSeverity.Warning
+        # test running pylint in stdin
+        config.plugin_settings('pylint')['executable'] = 'pylint'
+        diags = pylint_lint.pylsp_lint(config, doc, True)
+
+        msg = 'Unused import sys (unused-import)'
+        unused_import = [d for d in diags if d['message'] == msg][0]
+
+        assert unused_import['range']['start'] == {
+            'line': 0,
+            'character': 0,
+        }
+        assert unused_import['severity'] == lsp.DiagnosticSeverity.Warning
 
 
-@py3_only
-def test_syntax_error_pylint_py3(config, workspace):
+def test_syntax_error_pylint(config, workspace):
     with temp_document(DOC_SYNTAX_ERR, workspace) as doc:
         diag = pylint_lint.pylsp_lint(config, doc, True)[0]
 
-        if sys.version_info[:2] >= (3, 10):
-            assert diag['message'].count("[syntax-error] expected ':'")
-        else:
-            assert diag['message'].startswith('[syntax-error] invalid syntax')
+        assert diag['message'].startswith("[syntax-error]")
+        assert diag['message'].count("expected ':'") or 
diag['message'].count('invalid syntax')
         # Pylint doesn't give column numbers for invalid syntax.
         assert diag['range']['start'] == {'line': 0, 'character': 12}
         assert diag['severity'] == lsp.DiagnosticSeverity.Error
@@ -86,23 +80,12 @@
         config.plugin_settings('pylint')['executable'] = 'pylint'
         diag = pylint_lint.pylsp_lint(config, doc, True)[0]
 
-        assert diag['message'].count("expected ':'") or 
diag['message'].startswith('invalid syntax')
+        assert diag['message'].count("expected ':'") or 
diag['message'].count('invalid syntax')
         # Pylint doesn't give column numbers for invalid syntax.
         assert diag['range']['start'] == {'line': 0, 'character': 12}
         assert diag['severity'] == lsp.DiagnosticSeverity.Error
 
 
-@py2_only
-def test_syntax_error_pylint_py2(config, workspace):
-    with temp_document(DOC_SYNTAX_ERR, workspace) as doc:
-        diag = pylint_lint.pylsp_lint(config, doc, True)[0]
-
-        assert diag['message'].startswith('[syntax-error] invalid syntax')
-        # Pylint doesn't give column numbers for invalid syntax.
-        assert diag['range']['start'] == {'line': 0, 'character': 0}
-        assert diag['severity'] == lsp.DiagnosticSeverity.Error
-
-
 def test_lint_free_pylint(config, workspace):
     # Can't use temp_document because it might give us a file that doesn't
     # match pylint's naming requirements. We should be keeping this file clean
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/test/plugins/test_signature.py 
new/python-lsp-server-1.6.0/test/plugins/test_signature.py
--- old/python-lsp-server-1.5.0/test/plugins/test_signature.py  2022-04-05 
19:04:58.000000000 +0200
+++ new/python-lsp-server-1.6.0/test/plugins/test_signature.py  2022-10-31 
16:56:57.000000000 +0100
@@ -46,7 +46,7 @@
     sig_position = {'line': 9, 'character': 0}
     doc = Document(DOC_URI, workspace, DOC)
 
-    sigs = signature.pylsp_signature_help(doc, sig_position)['signatures']
+    sigs = signature.pylsp_signature_help(doc._config, doc, 
sig_position)['signatures']
     assert not sigs
 
 
@@ -55,13 +55,13 @@
     sig_position = {'line': 10, 'character': 5}
     doc = Document(DOC_URI, workspace, DOC)
 
-    sig_info = signature.pylsp_signature_help(doc, sig_position)
+    sig_info = signature.pylsp_signature_help(doc._config, doc, sig_position)
 
     sigs = sig_info['signatures']
     assert len(sigs) == 1
     assert sigs[0]['label'] == 'main(param1, param2)'
     assert sigs[0]['parameters'][0]['label'] == 'param1'
-    assert sigs[0]['parameters'][0]['documentation'] == 'Docs for param1'
+    assert sigs[0]['parameters'][0]['documentation'] == {'kind': 'markdown', 
'value': 'Docs for param1'}
 
     assert sig_info['activeParameter'] == 0
 
@@ -71,7 +71,7 @@
     sig_position = {'line': 17, 'character': 5}
     doc = Document(DOC_URI, workspace, MULTI_LINE_DOC)
 
-    sig_info = signature.pylsp_signature_help(doc, sig_position)
+    sig_info = signature.pylsp_signature_help(doc._config, doc, sig_position)
 
     sigs = sig_info['signatures']
     assert len(sigs) == 1
@@ -80,7 +80,7 @@
         'param5=None, param6=None, param7=None, param8=None)'
     )
     assert sigs[0]['parameters'][0]['label'] == 'param1'
-    assert sigs[0]['parameters'][0]['documentation'] == 'Docs for param1'
+    assert sigs[0]['parameters'][0]['documentation'] == {'kind': 'markdown', 
'value': 'Docs for param1'}
 
     assert sig_info['activeParameter'] == 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-server-1.5.0/test/plugins/test_yapf_format.py 
new/python-lsp-server-1.6.0/test/plugins/test_yapf_format.py
--- old/python-lsp-server-1.5.0/test/plugins/test_yapf_format.py        
2022-06-07 20:04:11.000000000 +0200
+++ new/python-lsp-server-1.6.0/test/plugins/test_yapf_format.py        
2022-10-31 16:56:57.000000000 +0100
@@ -29,7 +29,7 @@
 
 def test_format(workspace):
     doc = Document(DOC_URI, workspace, DOC)
-    res = pylsp_format_document(doc)
+    res = pylsp_format_document(doc, None)
 
     assert apply_text_edits(doc, res) == "A = ['h', 'w', 'a']\n\nB = ['h', 
'w']\n"
 
@@ -41,7 +41,7 @@
         'start': {'line': 0, 'character': 0},
         'end': {'line': 4, 'character': 10}
     }
-    res = pylsp_format_range(doc, def_range)
+    res = pylsp_format_range(doc, def_range, None)
 
     # Make sure B is still badly formatted
     assert apply_text_edits(doc, res) == "A = ['h', 'w', 'a']\n\nB = 
['h',\n\n\n'w']\n"
@@ -49,7 +49,7 @@
 
 def test_no_change(workspace):
     doc = Document(DOC_URI, workspace, GOOD_DOC)
-    assert not pylsp_format_document(doc)
+    assert not pylsp_format_document(doc, options=None)
 
 
 def test_config_file(tmpdir, workspace):
@@ -59,7 +59,7 @@
     src = tmpdir.join('test.py')
     doc = Document(uris.from_fs_path(src.strpath), workspace, DOC)
 
-    res = pylsp_format_document(doc)
+    res = pylsp_format_document(doc, options=None)
 
     # A was split on multiple lines because of column_limit from config file
     assert apply_text_edits(doc, res) == "A = [\n    'h', 'w',\n    
'a'\n]\n\nB = ['h', 'w']\n"
@@ -68,7 +68,7 @@
 @pytest.mark.parametrize('newline', ['\r\n'])
 def test_line_endings(workspace, newline):
     doc = Document(DOC_URI, workspace, f'import os;import sys{2 * 
newline}dict(a=1)')
-    res = pylsp_format_document(doc)
+    res = pylsp_format_document(doc, options=None)
 
     assert apply_text_edits(doc, res) == f'import os{newline}import sys{2 * 
newline}dict(a=1){newline}'
 
@@ -99,7 +99,7 @@
  log("x")
  log("hi")"""
     doc = Document(DOC_URI, workspace, single_space_indent)
-    res = pylsp_format_document(doc)
+    res = pylsp_format_document(doc, options=None)
 
     # two removes and two adds
     assert len(res) == 4

Reply via email to