Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pyupgrade for
openSUSE:Factory checked in at 2021-06-27 18:59:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyupgrade (Old)
and /work/SRC/openSUSE:Factory/.python-pyupgrade.new.2625 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyupgrade"
Sun Jun 27 18:59:20 2021 rev:12 rq:902589 version:2.19.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyupgrade/python-pyupgrade.changes
2021-06-02 22:11:43.292136018 +0200
+++
/work/SRC/openSUSE:Factory/.python-pyupgrade.new.2625/python-pyupgrade.changes
2021-06-27 19:00:43.656405775 +0200
@@ -1,0 +2,14 @@
+Sun Jun 20 08:51:13 UTC 2021 - Sebastian Wagner <[email protected]>
+
+- update to version 2.19.1
+ - unpack argument list comprehensions
+ - revert string join for potential perf reasons
+- update to version 2.19.2
+ - replace open modes with string flags
+- update to version 2.19.3
+ - ignore unrelated calls to .encode(...)
+ - fix elif -> else when indented
+- update to version 2.19.4
+ - fix __metaclass__ = type replacement without extra newline
+
+-------------------------------------------------------------------
Old:
----
python-pyupgrade-2.18.3.tar.gz
New:
----
python-pyupgrade-2.19.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyupgrade.spec ++++++
--- /var/tmp/diff_new_pack.RxIYA8/_old 2021-06-27 19:00:44.064406311 +0200
+++ /var/tmp/diff_new_pack.RxIYA8/_new 2021-06-27 19:00:44.064406311 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-pyupgrade
-Version: 2.18.3
+Version: 2.19.4
Release: 0
Summary: A tool to automatically upgrade syntax for newer versions
License: MIT
++++++ python-pyupgrade-2.18.3.tar.gz -> python-pyupgrade-2.19.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.18.3/.pre-commit-config.yaml
new/pyupgrade-2.19.4/.pre-commit-config.yaml
--- old/pyupgrade-2.18.3/.pre-commit-config.yaml 2021-05-25
04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/.pre-commit-config.yaml 2021-06-11
16:50:16.000000000 +0200
@@ -34,7 +34,7 @@
- id: add-trailing-comma
args: [--py36-plus]
- repo: https://github.com/asottile/pyupgrade
- rev: v2.18.3
+ rev: v2.19.4
hooks:
- id: pyupgrade
args: [--py36-plus]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.18.3/README.md
new/pyupgrade-2.19.4/README.md
--- old/pyupgrade-2.18.3/README.md 2021-05-25 04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/README.md 2021-06-11 16:50:16.000000000 +0200
@@ -20,7 +20,7 @@
```yaml
- repo: https://github.com/asottile/pyupgrade
- rev: v2.18.3
+ rev: v2.19.4
hooks:
- id: pyupgrade
```
@@ -440,6 +440,17 @@
```
+### Unpacking argument list comprehensions
+
+Availability:
+- `--py3-plus` is passed on the commandline.
+
+```diff
+-foo(*[i for i in bar])
++foo(*(i for i in bar))
+```
+
+
### `typing.NamedTuple` / `typing.TypedDict` py36+ syntax
Availability:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.18.3/pyupgrade/_main.py
new/pyupgrade-2.19.4/pyupgrade/_main.py
--- old/pyupgrade-2.18.3/pyupgrade/_main.py 2021-05-25 04:35:17.000000000
+0200
+++ new/pyupgrade-2.19.4/pyupgrade/_main.py 2021-06-11 16:50:16.000000000
+0200
@@ -323,6 +323,10 @@
def _fix_encode_to_binary(tokens: List[Token], i: int) -> None:
+ parts = rfind_string_parts(tokens, i - 2)
+ if not parts:
+ return
+
# .encode()
if (
i + 2 < len(tokens) and
@@ -352,10 +356,6 @@
else:
return
- parts = rfind_string_parts(tokens, i - 2)
- if not parts:
- return
-
for part in parts:
prefix, rest = parse_string_literal(tokens[part].src)
escapes = set(ESCAPE_RE.findall(rest))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/pyupgrade/_plugins/generator_expressions_pep289.py
new/pyupgrade-2.19.4/pyupgrade/_plugins/generator_expressions_pep289.py
--- old/pyupgrade-2.18.3/pyupgrade/_plugins/generator_expressions_pep289.py
2021-05-25 04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/pyupgrade/_plugins/generator_expressions_pep289.py
2021-06-11 16:50:16.000000000 +0200
@@ -13,6 +13,7 @@
from pyupgrade._data import TokenFunc
from pyupgrade._token_helpers import find_closing_bracket
from pyupgrade._token_helpers import find_comprehension_opening_bracket
+from pyupgrade._token_helpers import replace_list_comp_brackets
ALLOWED_FUNCS = frozenset((
@@ -40,27 +41,6 @@
tokens[j] = Token('PLACEHOLDER', '')
-def _replace_list_comp_brackets(i: int, tokens: List[Token]) -> None:
- start = find_comprehension_opening_bracket(i, tokens)
- end = find_closing_bracket(tokens, start)
- tokens[end] = Token('OP', ')')
- tokens[start] = Token('OP', '(')
-
-
-def _func_condition(func: ast.expr) -> bool:
- return (
- (
- isinstance(func, ast.Name) and
- func.id in ALLOWED_FUNCS
- ) or
- (
- isinstance(func, ast.Attribute) and
- isinstance(func.value, ast.Str) and
- func.attr == 'join'
- )
- )
-
-
@register(ast.Call)
def visit_Call(
state: State,
@@ -68,11 +48,12 @@
parent: ast.AST,
) -> Iterable[Tuple[Offset, TokenFunc]]:
if (
- _func_condition(node.func) and
+ isinstance(node.func, ast.Name) and
+ node.func.id in ALLOWED_FUNCS and
node.args and
isinstance(node.args[0], ast.ListComp)
):
if len(node.args) == 1 and not node.keywords:
yield ast_to_offset(node.args[0]), _delete_list_comp_brackets
else:
- yield ast_to_offset(node.args[0]), _replace_list_comp_brackets
+ yield ast_to_offset(node.args[0]), replace_list_comp_brackets
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/pyupgrade/_plugins/metaclass_type.py
new/pyupgrade-2.19.4/pyupgrade/_plugins/metaclass_type.py
--- old/pyupgrade-2.18.3/pyupgrade/_plugins/metaclass_type.py 2021-05-25
04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/pyupgrade/_plugins/metaclass_type.py 2021-06-11
16:50:16.000000000 +0200
@@ -15,7 +15,7 @@
def _remove_metaclass_type(i: int, tokens: List[Token]) -> None:
j = find_end(tokens, i)
- del tokens[i:j + 1]
+ del tokens[i:j]
@register(ast.Assign)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.18.3/pyupgrade/_plugins/open_mode.py
new/pyupgrade-2.19.4/pyupgrade/_plugins/open_mode.py
--- old/pyupgrade-2.18.3/pyupgrade/_plugins/open_mode.py 2021-05-25
04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/pyupgrade/_plugins/open_mode.py 2021-06-11
16:50:16.000000000 +0200
@@ -34,7 +34,7 @@
func_args, end = parse_call_args(tokens, j)
mode = tokens_to_src(tokens[slice(*func_args[arg_idx])])
mode_stripped = mode.split('=')[-1]
- mode_stripped = mode_stripped.strip().strip('"\'')
+ mode_stripped = ast.literal_eval(mode_stripped.strip())
if mode_stripped in U_MODE_REMOVE:
delete_argument(arg_idx, tokens, func_args)
elif mode_stripped in U_MODE_REPLACE_R:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/pyupgrade/_plugins/unpacking_argument_list_comprehensions.py
new/pyupgrade-2.19.4/pyupgrade/_plugins/unpacking_argument_list_comprehensions.py
---
old/pyupgrade-2.18.3/pyupgrade/_plugins/unpacking_argument_list_comprehensions.py
1970-01-01 01:00:00.000000000 +0100
+++
new/pyupgrade-2.19.4/pyupgrade/_plugins/unpacking_argument_list_comprehensions.py
2021-06-11 16:50:16.000000000 +0200
@@ -0,0 +1,24 @@
+import ast
+from typing import Iterable
+from typing import Tuple
+
+from tokenize_rt import Offset
+
+from pyupgrade._ast_helpers import ast_to_offset
+from pyupgrade._data import register
+from pyupgrade._data import State
+from pyupgrade._data import TokenFunc
+from pyupgrade._token_helpers import replace_list_comp_brackets
+
+
+@register(ast.Starred)
+def visit_Starred(
+ state: State,
+ node: ast.Starred,
+ parent: ast.AST,
+) -> Iterable[Tuple[Offset, TokenFunc]]:
+ if (
+ state.settings.min_version >= (3,) and
+ isinstance(node.value, ast.ListComp)
+ ):
+ yield ast_to_offset(node.value), replace_list_comp_brackets
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.18.3/pyupgrade/_token_helpers.py
new/pyupgrade-2.19.4/pyupgrade/_token_helpers.py
--- old/pyupgrade-2.18.3/pyupgrade/_token_helpers.py 2021-05-25
04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/pyupgrade/_token_helpers.py 2021-06-11
16:50:16.000000000 +0200
@@ -218,7 +218,10 @@
tokens[i] = tokens[i]._replace(src=tokens[i].src[diff:])
def replace_condition(self, tokens: List[Token], new: List[Token]) -> None:
- tokens[self.start:self.colon] = new
+ start = self.start
+ while tokens[start].name == 'UNIMPORTANT_WS':
+ start += 1
+ tokens[start:self.colon] = new
def _trim_end(self, tokens: List[Token]) -> 'Block':
"""the tokenizer reports the end of the block at the beginning of
@@ -474,3 +477,10 @@
return i
else: # pragma: no cover (<py38)
return i
+
+
+def replace_list_comp_brackets(i: int, tokens: List[Token]) -> None:
+ start = find_comprehension_opening_bracket(i, tokens)
+ end = find_closing_bracket(tokens, start)
+ tokens[end] = Token('OP', ')')
+ tokens[start] = Token('OP', '(')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.18.3/setup.cfg
new/pyupgrade-2.19.4/setup.cfg
--- old/pyupgrade-2.18.3/setup.cfg 2021-05-25 04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/setup.cfg 2021-06-11 16:50:16.000000000 +0200
@@ -1,6 +1,6 @@
[metadata]
name = pyupgrade
-version = 2.18.3
+version = 2.19.4
description = A tool to automatically upgrade syntax for newer versions.
long_description = file: README.md
long_description_content_type = text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/tests/features/binary_literals_test.py
new/pyupgrade-2.19.4/tests/features/binary_literals_test.py
--- old/pyupgrade-2.18.3/tests/features/binary_literals_test.py 2021-05-25
04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/tests/features/binary_literals_test.py 2021-06-11
16:50:16.000000000 +0200
@@ -21,6 +21,7 @@
'x.encode()',
# the codec / string is an f-string
'str.encode(f"{c}")', '"foo".encode(f"{c}")',
+ pytest.param('wat.encode(b"unrelated")', id='unrelated .encode(...)'),
),
)
def test_binary_literals_noop(s):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/tests/features/generator_expressions_pep289_test.py
new/pyupgrade-2.19.4/tests/features/generator_expressions_pep289_test.py
--- old/pyupgrade-2.18.3/tests/features/generator_expressions_pep289_test.py
2021-05-25 04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/tests/features/generator_expressions_pep289_test.py
2021-06-11 16:50:16.000000000 +0200
@@ -16,9 +16,13 @@
id='Non-supported function',
),
pytest.param('frozenset()', id='no arguments'),
+ pytest.param(
+ '"".join([[i for _ in range(2)] for i in range(3)])\n',
+ id='string join (left alone for perf reasons)',
+ ),
),
)
-def test_fix_typing_text_noop(s):
+def test_fix_generator_expressions_noop(s):
assert _fix_plugins(s, settings=Settings()) == s
@@ -72,16 +76,9 @@
id='Nested list comprehension\n',
),
pytest.param(
- '"".join([[i for _ in range(2)] for i in range(3)])\n',
-
- '"".join([i for _ in range(2)] for i in range(3))\n',
+ 'sum([[i for _ in range(2)] for i in range(3)],)\n',
- id='Join function',
- ),
- pytest.param(
- '"".join([[i for _ in range(2)] for i in range(3)],)\n',
-
- '"".join([i for _ in range(2)] for i in range(3))\n',
+ 'sum([i for _ in range(2)] for i in range(3))\n',
id='Trailing comma after list comprehension',
),
@@ -102,6 +99,6 @@
),
),
)
-def test_fix_typing_text(s, expected):
+def test_fix_generator_expressions(s, expected):
ret = _fix_plugins(s, settings=Settings())
assert ret == expected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/tests/features/metaclass_type_test.py
new/pyupgrade-2.19.4/tests/features/metaclass_type_test.py
--- old/pyupgrade-2.18.3/tests/features/metaclass_type_test.py 2021-05-25
04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/tests/features/metaclass_type_test.py 2021-06-11
16:50:16.000000000 +0200
@@ -52,6 +52,12 @@
'',
id='module-scope assignment across newline',
),
+ pytest.param(
+ '__metaclass__ = type\n'
+ 'a = 1\n',
+ 'a = 1\n',
+ id='replace with code after it',
+ ),
),
)
def test_fix_metaclass_type_assignment(s, expected):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.18.3/tests/features/open_mode_test.py
new/pyupgrade-2.19.4/tests/features/open_mode_test.py
--- old/pyupgrade-2.18.3/tests/features/open_mode_test.py 2021-05-25
04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/tests/features/open_mode_test.py 2021-06-11
16:50:16.000000000 +0200
@@ -62,6 +62,7 @@
'open(mode="r", encoding="UTF-8", file="t.py")',
'open(encoding="UTF-8", file="t.py")',
),
+ pytest.param('open(f, u"r")', 'open(f)', id='string with u flag'),
),
)
def test_fix_open_mode(s, expected):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/tests/features/unpacking_argument_list_comprehensions_test.py
new/pyupgrade-2.19.4/tests/features/unpacking_argument_list_comprehensions_test.py
---
old/pyupgrade-2.18.3/tests/features/unpacking_argument_list_comprehensions_test.py
1970-01-01 01:00:00.000000000 +0100
+++
new/pyupgrade-2.19.4/tests/features/unpacking_argument_list_comprehensions_test.py
2021-06-11 16:50:16.000000000 +0200
@@ -0,0 +1,75 @@
+import pytest
+
+from pyupgrade._data import Settings
+from pyupgrade._main import _fix_plugins
+
+
[email protected](
+ ('s', 'version'),
+ (
+ pytest.param(
+ 'foo(*[i for i in bar])\n',
+ (2, 7),
+ id='Not Python3+',
+ ),
+ pytest.param(
+ '2*3',
+ (3,),
+ id='Multiplication star',
+ ),
+ pytest.param(
+ '2**3',
+ (3,),
+ id='Power star',
+ ),
+ pytest.param(
+ 'foo([i for i in bar])',
+ (3,),
+ id='List comp, no star',
+ ),
+ pytest.param(
+ 'foo(*bar)',
+ (3,),
+ id='Starred, no list comp',
+ ),
+ ),
+)
+def test_fix_unpack_argument_list_comp_noop(s, version):
+ assert _fix_plugins(s, settings=Settings(min_version=version)) == s
+
+
[email protected](
+ ('s', 'expected'),
+ (
+ pytest.param(
+ 'foo(*[i for i in bar])\n',
+
+ 'foo(*(i for i in bar))\n',
+
+ id='Starred list comprehension',
+ ),
+ pytest.param(
+ 'foo(\n'
+ ' *\n'
+ ' [i for i in bar]\n'
+ ' )\n',
+
+ 'foo(\n'
+ ' *\n'
+ ' (i for i in bar)\n'
+ ' )\n',
+
+ id='Multiline starred list comprehension',
+ ),
+ pytest.param(
+ 'foo(*[i for i in bar], qux, quox=None)\n',
+
+ 'foo(*(i for i in bar), qux, quox=None)\n',
+
+ id='Single line, including other args',
+ ),
+ ),
+)
+def test_fix_unpack_argument_list_comp(s, expected):
+ ret = _fix_plugins(s, settings=Settings((3,)))
+ assert ret == expected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.18.3/tests/features/versioned_branches_test.py
new/pyupgrade-2.19.4/tests/features/versioned_branches_test.py
--- old/pyupgrade-2.18.3/tests/features/versioned_branches_test.py
2021-05-25 04:35:17.000000000 +0200
+++ new/pyupgrade-2.19.4/tests/features/versioned_branches_test.py
2021-06-11 16:50:16.000000000 +0200
@@ -415,6 +415,21 @@
id='elif six.PY3 no else',
),
+ pytest.param(
+ 'def f():\n'
+ ' if True:\n'
+ ' print(1)\n'
+ ' elif six.PY3:\n'
+ ' print(3)\n',
+
+ 'def f():\n'
+ ' if True:\n'
+ ' print(1)\n'
+ ' else:\n'
+ ' print(3)\n',
+
+ id='elif six.PY3 no else, indented',
+ ),
),
)
def test_fix_py2_blocks(s, expected):