Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-python-lsp-black for 
openSUSE:Factory checked in at 2022-04-10 00:42:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-lsp-black (Old)
 and      /work/SRC/openSUSE:Factory/.python-python-lsp-black.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python-lsp-black"

Sun Apr 10 00:42:19 2022 rev:3 rq:968061 version:1.2.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python-lsp-black/python-python-lsp-black.changes
  2022-03-25 21:55:18.090314074 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-python-lsp-black.new.1900/python-python-lsp-black.changes
        2022-04-10 00:42:31.948694712 +0200
@@ -1,0 +2,15 @@
+Sat Apr  9 21:17:31 UTC 2022 - Ben Greiner <c...@bnavigator.de>
+
+- Update to 1.2.0
+  * This release fixes formatting of Python files with non-UNIX
+    line endings, adds plugin configuration support and black
+    configuration caching to improve performance.
+  * Official support for Python 3.10 by @wlcx (PR 31).
+  * Correctly format files and ranges with line endings other than
+    LF by @ccordoba12 (PR 28).
+  * Plugin configuration support and black configuration caching by
+    @ccordoba12 and @haplo (PR 26).
+  * Fixed PyPI badge in Readme (PR 32).
+  * Updated pre-commit hooks' versions (PR 33).
+
+-------------------------------------------------------------------

Old:
----
  python-lsp-black-1.1.0.tar.gz

New:
----
  python-lsp-black-1.2.0.tar.gz

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

Other differences:
------------------
++++++ python-python-lsp-black.spec ++++++
--- /var/tmp/diff_new_pack.ZGKpoW/_old  2022-04-10 00:42:32.568687817 +0200
+++ /var/tmp/diff_new_pack.ZGKpoW/_new  2022-04-10 00:42:32.572687773 +0200
@@ -19,18 +19,19 @@
 %{?!python_module:%define python_module() python3-%{**}}
 %define skip_python2 1
 Name:           python-python-lsp-black
-Version:        1.1.0
+Version:        1.2.0
 Release:        0
 Summary:        Black plugin for the Python LSP Server
 License:        MIT
 URL:            https://github.com/python-lsp/python-lsp-black
 Source:         
https://files.pythonhosted.org/packages/source/p/python-lsp-black/python-lsp-black-%{version}.tar.gz
+BuildRequires:  %{python_module base >= 3.7}
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  python-rpm-macros
 # SECTION test requirements
-BuildRequires:  %{python_module black >= 19.3b0}
+BuildRequires:  %{python_module black >= 22.1.0}
 BuildRequires:  %{python_module pytest}
-BuildRequires:  %{python_module python-lsp-server}
+BuildRequires:  %{python_module python-lsp-server >= 1.4.0}
 BuildRequires:  %{python_module toml}
 # /SECTION
 BuildRequires:  fdupes

++++++ python-lsp-black-1.1.0.tar.gz -> python-lsp-black-1.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-black-1.1.0/PKG-INFO 
new/python-lsp-black-1.2.0/PKG-INFO
--- old/python-lsp-black-1.1.0/PKG-INFO 2022-01-31 00:21:43.735670300 +0100
+++ new/python-lsp-black-1.2.0/PKG-INFO 2022-03-28 20:24:00.489029200 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: python-lsp-black
-Version: 1.1.0
+Version: 1.2.0
 Summary: Black plugin for the Python LSP Server
 Home-page: https://github.com/python-lsp/python-lsp-black
 Author: Python LSP contributors
@@ -11,10 +11,10 @@
 Project-URL: Source Code, https://github.com/python-lsp/python-lsp-black
 Description: # python-lsp-black
         
-        
[![PyPI](https://img.shields.io/pypi/v/pyls-black.svg)](https://pypi.org/project/python-lsp-black)
 [![Code style: 
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+        
[![PyPI](https://img.shields.io/pypi/v/python-lsp-black.svg)](https://pypi.org/project/python-lsp-black)
 [![Code style: 
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
         
[![Python](https://github.com/python-lsp/python-lsp-black/actions/workflows/python.yml/badge.svg)](https://github.com/python-lsp/python-lsp-black/actions/workflows/python.yml)
         
-        > [Black](https://github.com/psf/black) plugin for the [Python LSP 
Server](https://github.com/python-lsp/python-lsp-server).
+        [Black](https://github.com/psf/black) plugin for the [Python LSP 
Server](https://github.com/python-lsp/python-lsp-server).
         
         ## Install
         
@@ -32,8 +32,31 @@
         - The code will only be formatted if it is syntactically valid Python.
         - Text selections are treated as if they were a separate Python file.
           Unfortunately this means you can't format an indented block of code.
-        - `python-lsp-black` will use your project's 
[pyproject.toml](https://github.com/psf/black#pyprojecttoml) if it has one.
-        - `python-lsp-black` only officially supports the latest stable 
version of [black](https://github.com/psf/black). An effort is made to keep 
backwards-compatibility but older black versions will not be actively tested.
+        - `python-lsp-black` will use your project's
+          [pyproject.toml](https://github.com/psf/black#pyprojecttoml) if it 
has one.
+        - `python-lsp-black` only officially supports the latest stable 
version of
+          [black](https://github.com/psf/black). An effort is made to keep 
backwards-compatibility
+          but older black versions will not be actively tested.
+        - The plugin can cache the black configuration that applies to each 
Python file, this
+          improves performance of the plugin. When configuration caching is 
enabled any changes to
+          black's configuration will need the LSP server to be restarted. 
Configuration caching
+          can be disabled with the `cache_config` option, see *Configuration* 
below.
+        
+        # Configuration
+        
+        The plugin follows [python-lsp-server's
+        
configuration](https://github.com/python-lsp/python-lsp-server/#configuration). 
These are
+        the valid configuration keys:
+        
+        - `pylsp.plugins.black.enabled`: boolean to enable/disable the plugin.
+        - `pylsp.plugins.black.cache_config`: a boolean to enable black 
configuration caching (see
+          *Usage*). `false` by default.
+        - `pylsp.plugins.black.line_length`: an integer that maps to [black's
+          
`max-line-length`](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#line-length)
+          setting. Defaults to 88 (same as black's default). This can also be 
set through black's
+          configuration files, which should be preferred for multi-user 
projects.
+        - `pylsp.plugins.black.preview`: a boolean to enable or disable 
[black's `--preview`
+          
setting](https://black.readthedocs.io/en/stable/the_black_code_style/future_style.html#preview-style).
         
         # Development
         
@@ -46,8 +69,8 @@
         ```
         
         This project uses [pre-commit](https://pre-commit.com/) hooks to 
control code quality,
-        install them to run them when creating a git commit, thus avoiding 
seeing errors when you
-        create a pull request:
+        install them to run automatically when creating a git commit, thus 
avoiding seeing errors
+        when you create a pull request:
         
         ```shell
         pre-commit install
@@ -77,6 +100,6 @@
 Classifier: Programming Language :: Python
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Description-Content-Type: text/markdown
 Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-black-1.1.0/README.md 
new/python-lsp-black-1.2.0/README.md
--- old/python-lsp-black-1.1.0/README.md        2022-01-31 00:12:22.000000000 
+0100
+++ new/python-lsp-black-1.2.0/README.md        2022-03-28 20:17:42.000000000 
+0200
@@ -1,9 +1,9 @@
 # python-lsp-black
 
-[![PyPI](https://img.shields.io/pypi/v/pyls-black.svg)](https://pypi.org/project/python-lsp-black)
 [![Code style: 
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+[![PyPI](https://img.shields.io/pypi/v/python-lsp-black.svg)](https://pypi.org/project/python-lsp-black)
 [![Code style: 
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
 
[![Python](https://github.com/python-lsp/python-lsp-black/actions/workflows/python.yml/badge.svg)](https://github.com/python-lsp/python-lsp-black/actions/workflows/python.yml)
 
-> [Black](https://github.com/psf/black) plugin for the [Python LSP 
Server](https://github.com/python-lsp/python-lsp-server).
+[Black](https://github.com/psf/black) plugin for the [Python LSP 
Server](https://github.com/python-lsp/python-lsp-server).
 
 ## Install
 
@@ -21,8 +21,31 @@
 - The code will only be formatted if it is syntactically valid Python.
 - Text selections are treated as if they were a separate Python file.
   Unfortunately this means you can't format an indented block of code.
-- `python-lsp-black` will use your project's 
[pyproject.toml](https://github.com/psf/black#pyprojecttoml) if it has one.
-- `python-lsp-black` only officially supports the latest stable version of 
[black](https://github.com/psf/black). An effort is made to keep 
backwards-compatibility but older black versions will not be actively tested.
+- `python-lsp-black` will use your project's
+  [pyproject.toml](https://github.com/psf/black#pyprojecttoml) if it has one.
+- `python-lsp-black` only officially supports the latest stable version of
+  [black](https://github.com/psf/black). An effort is made to keep 
backwards-compatibility
+  but older black versions will not be actively tested.
+- The plugin can cache the black configuration that applies to each Python 
file, this
+  improves performance of the plugin. When configuration caching is enabled 
any changes to
+  black's configuration will need the LSP server to be restarted. 
Configuration caching
+  can be disabled with the `cache_config` option, see *Configuration* below.
+
+# Configuration
+
+The plugin follows [python-lsp-server's
+configuration](https://github.com/python-lsp/python-lsp-server/#configuration).
 These are
+the valid configuration keys:
+
+- `pylsp.plugins.black.enabled`: boolean to enable/disable the plugin.
+- `pylsp.plugins.black.cache_config`: a boolean to enable black configuration 
caching (see
+  *Usage*). `false` by default.
+- `pylsp.plugins.black.line_length`: an integer that maps to [black's
+  
`max-line-length`](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#line-length)
+  setting. Defaults to 88 (same as black's default). This can also be set 
through black's
+  configuration files, which should be preferred for multi-user projects.
+- `pylsp.plugins.black.preview`: a boolean to enable or disable [black's 
`--preview`
+  
setting](https://black.readthedocs.io/en/stable/the_black_code_style/future_style.html#preview-style).
 
 # Development
 
@@ -35,8 +58,8 @@
 ```
 
 This project uses [pre-commit](https://pre-commit.com/) hooks to control code 
quality,
-install them to run them when creating a git commit, thus avoiding seeing 
errors when you
-create a pull request:
+install them to run automatically when creating a git commit, thus avoiding 
seeing errors
+when you create a pull request:
 
 ```shell
 pre-commit install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-black-1.1.0/pylsp_black/plugin.py 
new/python-lsp-black-1.2.0/pylsp_black/plugin.py
--- old/python-lsp-black-1.1.0/pylsp_black/plugin.py    2022-01-31 
00:09:55.000000000 +0100
+++ new/python-lsp-black-1.2.0/pylsp_black/plugin.py    2022-03-28 
20:17:42.000000000 +0200
@@ -1,14 +1,18 @@
 import logging
 import os
+from functools import lru_cache
 from pathlib import Path
 from typing import Dict, Optional
 
 import black
 import toml
 from pylsp import hookimpl
+from pylsp._utils import get_eol_chars
+from pylsp.config.config import Config
 
 logger = logging.getLogger(__name__)
 
+
 GLOBAL_CONFIG: Optional[Path] = None
 try:
     if os.name == "nt":
@@ -25,19 +29,34 @@
 
 
 @hookimpl(tryfirst=True)
-def pylsp_format_document(document):
-    return format_document(document)
+def pylsp_format_document(config, document):
+    return format_document(config, document)
 
 
 @hookimpl(tryfirst=True)
-def pylsp_format_range(document, range):
+def pylsp_format_range(config, document, range):
     range["start"]["character"] = 0
     range["end"]["line"] += 1
     range["end"]["character"] = 0
-    return format_document(document, range)
+    return format_document(config, document, range)
+
 
+@hookimpl
+def pylsp_settings():
+    """Configuration options that can be set on the client."""
+    return {
+        "plugins": {
+            "black": {
+                "enabled": True,
+                "line_length": 88,
+                "preview": False,
+                "cache_config": False,
+            }
+        }
+    }
 
-def format_document(document, range=None):
+
+def format_document(client_config, document, range=None):
     if range:
         start = range["start"]["line"]
         end = range["end"]["line"]
@@ -49,7 +68,7 @@
             "end": {"line": len(document.lines), "character": 0},
         }
 
-    config = load_config(document.path)
+    config = load_config(document.path, client_config)
 
     try:
         formatted_text = format_text(text=text, config=config)
@@ -68,8 +87,25 @@
         string_normalization=not config["skip_string_normalization"],
     )
     try:
-        # will raise black.NothingChanged, we want to bubble that exception up
-        return black.format_file_contents(text, fast=config["fast"], mode=mode)
+        # Black's format_file_contents only works reliably when eols are '\n'. 
It gives
+        # an error for '\r' and produces wrong formatting for '\r\n'. So we 
replace
+        # those eols by '\n' before formatting and restore them afterwards.
+        replace_eols = False
+        eol_chars = get_eol_chars(text)
+        if eol_chars is not None and eol_chars != "\n":
+            replace_eols = True
+            text = text.replace(eol_chars, "\n")
+
+        # Will raise black.NothingChanged, we want to bubble that exception up
+        formatted_text = black.format_file_contents(
+            text, fast=config["fast"], mode=mode
+        )
+
+        # Restore eols if necessary.
+        if replace_eols:
+            formatted_text = formatted_text.replace("\n", eol_chars)
+
+        return formatted_text
     except (
         # raised when the file has syntax errors
         ValueError,
@@ -84,13 +120,17 @@
         raise black.NothingChanged from e
 
 
-def load_config(filename: str) -> Dict:
+@lru_cache(100)
+def _load_config(filename: str, client_config: Config) -> Dict:
+    settings = client_config.plugin_settings("black")
+
     defaults = {
-        "line_length": 88,
+        "line_length": settings.get("line_length", 88),
         "fast": False,
         "pyi": filename.endswith(".pyi"),
         "skip_string_normalization": False,
         "target_version": set(),
+        "preview": settings.get("preview", False),
     }
 
     root = black.find_project_root((filename,))
@@ -139,6 +179,7 @@
             black.TargetVersion.PY37,
             black.TargetVersion.PY38,
             black.TargetVersion.PY39,
+            black.TargetVersion.PY310,
         }
     else:
         target_version = set()
@@ -148,3 +189,13 @@
     logger.info("Using config from %s: %r", pyproject_filename, config)
 
     return config
+
+
+def load_config(filename: str, client_config: Config) -> Dict:
+    settings = client_config.plugin_settings("black")
+
+    # Use the original, not cached function to load settings if requested
+    if not settings.get("cache_config", False):
+        return _load_config.__wrapped__(filename, client_config)
+
+    return _load_config(filename, client_config)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-black-1.1.0/pyproject.toml 
new/python-lsp-black-1.2.0/pyproject.toml
--- old/python-lsp-black-1.1.0/pyproject.toml   2021-12-01 12:04:22.000000000 
+0100
+++ new/python-lsp-black-1.2.0/pyproject.toml   2022-03-28 15:29:25.000000000 
+0200
@@ -1,5 +1,5 @@
 [tool.black]
-target-version = ['py36', 'py37', 'py38', 'py39']
+target-version = ['py36', 'py37', 'py38', 'py39', 'py310']
 exclude = '''
 /(
          \.venv
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-black-1.1.0/python_lsp_black.egg-info/PKG-INFO 
new/python-lsp-black-1.2.0/python_lsp_black.egg-info/PKG-INFO
--- old/python-lsp-black-1.1.0/python_lsp_black.egg-info/PKG-INFO       
2022-01-31 00:21:43.000000000 +0100
+++ new/python-lsp-black-1.2.0/python_lsp_black.egg-info/PKG-INFO       
2022-03-28 20:24:00.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: python-lsp-black
-Version: 1.1.0
+Version: 1.2.0
 Summary: Black plugin for the Python LSP Server
 Home-page: https://github.com/python-lsp/python-lsp-black
 Author: Python LSP contributors
@@ -11,10 +11,10 @@
 Project-URL: Source Code, https://github.com/python-lsp/python-lsp-black
 Description: # python-lsp-black
         
-        
[![PyPI](https://img.shields.io/pypi/v/pyls-black.svg)](https://pypi.org/project/python-lsp-black)
 [![Code style: 
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
+        
[![PyPI](https://img.shields.io/pypi/v/python-lsp-black.svg)](https://pypi.org/project/python-lsp-black)
 [![Code style: 
black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
         
[![Python](https://github.com/python-lsp/python-lsp-black/actions/workflows/python.yml/badge.svg)](https://github.com/python-lsp/python-lsp-black/actions/workflows/python.yml)
         
-        > [Black](https://github.com/psf/black) plugin for the [Python LSP 
Server](https://github.com/python-lsp/python-lsp-server).
+        [Black](https://github.com/psf/black) plugin for the [Python LSP 
Server](https://github.com/python-lsp/python-lsp-server).
         
         ## Install
         
@@ -32,8 +32,31 @@
         - The code will only be formatted if it is syntactically valid Python.
         - Text selections are treated as if they were a separate Python file.
           Unfortunately this means you can't format an indented block of code.
-        - `python-lsp-black` will use your project's 
[pyproject.toml](https://github.com/psf/black#pyprojecttoml) if it has one.
-        - `python-lsp-black` only officially supports the latest stable 
version of [black](https://github.com/psf/black). An effort is made to keep 
backwards-compatibility but older black versions will not be actively tested.
+        - `python-lsp-black` will use your project's
+          [pyproject.toml](https://github.com/psf/black#pyprojecttoml) if it 
has one.
+        - `python-lsp-black` only officially supports the latest stable 
version of
+          [black](https://github.com/psf/black). An effort is made to keep 
backwards-compatibility
+          but older black versions will not be actively tested.
+        - The plugin can cache the black configuration that applies to each 
Python file, this
+          improves performance of the plugin. When configuration caching is 
enabled any changes to
+          black's configuration will need the LSP server to be restarted. 
Configuration caching
+          can be disabled with the `cache_config` option, see *Configuration* 
below.
+        
+        # Configuration
+        
+        The plugin follows [python-lsp-server's
+        
configuration](https://github.com/python-lsp/python-lsp-server/#configuration). 
These are
+        the valid configuration keys:
+        
+        - `pylsp.plugins.black.enabled`: boolean to enable/disable the plugin.
+        - `pylsp.plugins.black.cache_config`: a boolean to enable black 
configuration caching (see
+          *Usage*). `false` by default.
+        - `pylsp.plugins.black.line_length`: an integer that maps to [black's
+          
`max-line-length`](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#line-length)
+          setting. Defaults to 88 (same as black's default). This can also be 
set through black's
+          configuration files, which should be preferred for multi-user 
projects.
+        - `pylsp.plugins.black.preview`: a boolean to enable or disable 
[black's `--preview`
+          
setting](https://black.readthedocs.io/en/stable/the_black_code_style/future_style.html#preview-style).
         
         # Development
         
@@ -46,8 +69,8 @@
         ```
         
         This project uses [pre-commit](https://pre-commit.com/) hooks to 
control code quality,
-        install them to run them when creating a git commit, thus avoiding 
seeing errors when you
-        create a pull request:
+        install them to run automatically when creating a git commit, thus 
avoiding seeing errors
+        when you create a pull request:
         
         ```shell
         pre-commit install
@@ -77,6 +100,6 @@
 Classifier: Programming Language :: Python
 Classifier: License :: OSI Approved :: MIT License
 Classifier: Operating System :: OS Independent
-Requires-Python: >=3.6
+Requires-Python: >=3.7
 Description-Content-Type: text/markdown
 Provides-Extra: dev
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-lsp-black-1.1.0/python_lsp_black.egg-info/requires.txt 
new/python-lsp-black-1.2.0/python_lsp_black.egg-info/requires.txt
--- old/python-lsp-black-1.1.0/python_lsp_black.egg-info/requires.txt   
2022-01-31 00:21:43.000000000 +0100
+++ new/python-lsp-black-1.2.0/python_lsp_black.egg-info/requires.txt   
2022-03-28 20:24:00.000000000 +0200
@@ -1,5 +1,5 @@
-black>=19.3b0
-python-lsp-server
+black>=22.1.0
+python-lsp-server>=1.4.0
 toml
 
 [dev]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-lsp-black-1.1.0/setup.cfg 
new/python-lsp-black-1.2.0/setup.cfg
--- old/python-lsp-black-1.1.0/setup.cfg        2022-01-31 00:21:43.735670300 
+0100
+++ new/python-lsp-black-1.2.0/setup.cfg        2022-03-28 20:24:00.489029200 
+0200
@@ -1,6 +1,6 @@
 [metadata]
 name = python-lsp-black
-version = 1.1.0
+version = 1.2.0
 author = Python LSP contributors
 author_email = f...@fidelramos.net
 description = Black plugin for the Python LSP Server
@@ -18,8 +18,8 @@
 
 [options]
 packages = find:
-install_requires = python-lsp-server; black>=19.3b0; toml
-python_requires = >= 3.6
+install_requires = python-lsp-server>=1.4.0; black>=22.1.0; toml
+python_requires = >= 3.7
 
 [options.entry_points]
 pylsp = pylsp_black = pylsp_black.plugin

Reply via email to