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-07-21 19:06:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyupgrade (Old)
and /work/SRC/openSUSE:Factory/.python-pyupgrade.new.2632 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyupgrade"
Wed Jul 21 19:06:40 2021 rev:13 rq:907474 version:2.20.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyupgrade/python-pyupgrade.changes
2021-06-27 19:00:43.656405775 +0200
+++
/work/SRC/openSUSE:Factory/.python-pyupgrade.new.2632/python-pyupgrade.changes
2021-07-21 19:07:55.527452627 +0200
@@ -1,0 +2,9 @@
+Sat Jul 3 20:31:13 UTC 2021 - Sebastian Wagner <[email protected]>
+
+- Update to version 2.20.0:
+ - stricter mypy settings
+ - remove unused type ignore
+ - fix six.with_metaclass and trailing commas
+ - rewrite cElementTree to ElementTree
+
+-------------------------------------------------------------------
Old:
----
python-pyupgrade-2.19.4.tar.gz
New:
----
python-pyupgrade-2.20.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyupgrade.spec ++++++
--- /var/tmp/diff_new_pack.5jT8GN/_old 2021-07-21 19:07:55.911453293 +0200
+++ /var/tmp/diff_new_pack.5jT8GN/_new 2021-07-21 19:07:55.915453301 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-pyupgrade
-Version: 2.19.4
+Version: 2.20.0
Release: 0
Summary: A tool to automatically upgrade syntax for newer versions
License: MIT
++++++ python-pyupgrade-2.19.4.tar.gz -> python-pyupgrade-2.20.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.19.4/.pre-commit-config.yaml
new/pyupgrade-2.20.0/.pre-commit-config.yaml
--- old/pyupgrade-2.19.4/.pre-commit-config.yaml 2021-06-11
16:50:16.000000000 +0200
+++ new/pyupgrade-2.20.0/.pre-commit-config.yaml 2021-07-03
21:01:26.000000000 +0200
@@ -34,11 +34,11 @@
- id: add-trailing-comma
args: [--py36-plus]
- repo: https://github.com/asottile/pyupgrade
- rev: v2.19.4
+ rev: v2.20.0
hooks:
- id: pyupgrade
args: [--py36-plus]
- repo: https://github.com/pre-commit/mirrors-mypy
- rev: v0.812
+ rev: v0.910
hooks:
- id: mypy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.19.4/README.md
new/pyupgrade-2.20.0/README.md
--- old/pyupgrade-2.19.4/README.md 2021-06-11 16:50:16.000000000 +0200
+++ new/pyupgrade-2.20.0/README.md 2021-07-03 21:01:26.000000000 +0200
@@ -20,7 +20,7 @@
```yaml
- repo: https://github.com/asottile/pyupgrade
- rev: v2.19.4
+ rev: v2.20.0
hooks:
- id: pyupgrade
```
@@ -451,6 +451,19 @@
```
+###??Rewrite `xml.etree.cElementTree` to `xml.etree.ElementTree`
+
+Availability:
+- `--py3-plus` is passed on the commandline.
+
+```diff
+-import xml.etree.cElementTree as ET
++import xml.etree.ElementTree as ET
+-from xml.etree.cElementTree import XML
++from xml.etree.ElementTree import XML
+```
+
+
### `typing.NamedTuple` / `typing.TypedDict` py36+ syntax
Availability:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.19.4/pyupgrade/_main.py
new/pyupgrade-2.20.0/pyupgrade/_main.py
--- old/pyupgrade-2.19.4/pyupgrade/_main.py 2021-06-11 16:50:16.000000000
+0200
+++ new/pyupgrade-2.20.0/pyupgrade/_main.py 2021-07-03 21:01:26.000000000
+0200
@@ -805,7 +805,7 @@
elif token.offset in visitor.named_tuples and token.name == 'NAME':
call = visitor.named_tuples[token.offset]
types: Dict[str, ast.expr] = {
- tup.elts[0].s: tup.elts[1] # type: ignore # (checked above)
+ tup.elts[0].s: tup.elts[1]
for tup in call.args[1].elts # type: ignore # (checked above)
}
end, attrs = _typed_class_replacement(tokens, i, call, types)
@@ -823,7 +823,7 @@
elif token.offset in visitor.dict_typed_dicts and token.name == 'NAME':
call = visitor.dict_typed_dicts[token.offset]
types = {
- k.s: v # type: ignore # (checked above)
+ k.s: v
for k, v in zip(
call.args[1].keys, # type: ignore # (checked above)
call.args[1].values, # type: ignore # (checked above)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.19.4/pyupgrade/_plugins/c_element_tree.py
new/pyupgrade-2.20.0/pyupgrade/_plugins/c_element_tree.py
--- old/pyupgrade-2.19.4/pyupgrade/_plugins/c_element_tree.py 1970-01-01
01:00:00.000000000 +0100
+++ new/pyupgrade-2.20.0/pyupgrade/_plugins/c_element_tree.py 2021-07-03
21:01:26.000000000 +0200
@@ -0,0 +1,50 @@
+import ast
+from typing import Iterable
+from typing import List
+from typing import Tuple
+
+from tokenize_rt import Offset
+from tokenize_rt import Token
+
+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 find_token
+
+
+def _replace_celementtree_with_elementtree(
+ i: int,
+ tokens: List[Token],
+) -> None:
+ j = find_token(tokens, i, 'cElementTree')
+ tokens[j] = tokens[j]._replace(src='ElementTree')
+
+
+@register(ast.ImportFrom)
+def visit_ImportFrom(
+ state: State,
+ node: ast.ImportFrom,
+ parent: ast.AST,
+) -> Iterable[Tuple[Offset, TokenFunc]]:
+ if (
+ state.settings.min_version >= (3,) and
+ node.module == 'xml.etree.cElementTree' and
+ node.level == 0
+ ):
+ yield ast_to_offset(node), _replace_celementtree_with_elementtree
+
+
+@register(ast.Import)
+def visit_Import(
+ state: State,
+ node: ast.Import,
+ parent: ast.AST,
+) -> Iterable[Tuple[Offset, TokenFunc]]:
+ if (
+ state.settings.min_version >= (3,) and
+ len(node.names) == 1 and
+ node.names[0].name == 'xml.etree.cElementTree' and
+ node.names[0].asname is not None
+ ):
+ yield ast_to_offset(node), _replace_celementtree_with_elementtree
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.19.4/pyupgrade/_token_helpers.py
new/pyupgrade-2.20.0/pyupgrade/_token_helpers.py
--- old/pyupgrade-2.19.4/pyupgrade/_token_helpers.py 2021-06-11
16:50:16.000000000 +0200
+++ new/pyupgrade-2.20.0/pyupgrade/_token_helpers.py 2021-07-03
21:01:26.000000000 +0200
@@ -410,7 +410,15 @@
):
start_rest += 1
- rest = tokens_to_src(tokens[start_rest:end - 1])
+ # Remove trailing comma
+ end_rest = end - 1
+ while (
+ tokens[end_rest - 1].name == 'OP' and
+ tokens[end_rest - 1].src == ','
+ ):
+ end_rest -= 1
+
+ rest = tokens_to_src(tokens[start_rest:end_rest])
src = tmpl.format(args=arg_strs, rest=rest)
tokens[start:end] = [Token('CODE', src)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.19.4/setup.cfg
new/pyupgrade-2.20.0/setup.cfg
--- old/pyupgrade-2.19.4/setup.cfg 2021-06-11 16:50:16.000000000 +0200
+++ new/pyupgrade-2.20.0/setup.cfg 2021-07-03 21:01:26.000000000 +0200
@@ -1,6 +1,6 @@
[metadata]
name = pyupgrade
-version = 2.19.4
+version = 2.20.0
description = A tool to automatically upgrade syntax for newer versions.
long_description = file: README.md
long_description_content_type = text/markdown
@@ -47,6 +47,8 @@
disallow_incomplete_defs = true
disallow_untyped_defs = true
no_implicit_optional = true
+warn_redundant_casts = true
+warn_unused_ignores = true
[mypy-testing.*]
disallow_untyped_defs = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyupgrade-2.19.4/tests/features/c_element_tree_test.py
new/pyupgrade-2.20.0/tests/features/c_element_tree_test.py
--- old/pyupgrade-2.19.4/tests/features/c_element_tree_test.py 1970-01-01
01:00:00.000000000 +0100
+++ new/pyupgrade-2.20.0/tests/features/c_element_tree_test.py 2021-07-03
21:01:26.000000000 +0200
@@ -0,0 +1,57 @@
+import pytest
+
+from pyupgrade._data import Settings
+from pyupgrade._main import _fix_plugins
+
+
[email protected](
+ ('s', 'version'),
+ (
+ pytest.param(
+ 'import xml.etree.cElementTree as ET',
+ (2, 7),
+ id='not Python3+',
+ ),
+ pytest.param(
+ 'import contextlib, xml.etree.ElementTree as ET\n',
+ (3,),
+ id='does not rewrite multiple imports',
+ ),
+ pytest.param(
+ 'from .xml.etree.cElementTree import XML\n',
+ (3,),
+ id='leave relative imports alone',
+ ),
+ pytest.param(
+ 'import xml.etree.cElementTree',
+ (3,),
+ id='import without alias',
+ ),
+ ),
+)
+def test_c_element_tree_noop(s, version):
+ assert _fix_plugins(s, settings=Settings(min_version=version)) == s
+
+
[email protected](
+ ('s', 'expected'),
+ (
+ pytest.param(
+ 'from xml.etree.cElementTree import XML\n',
+ 'from xml.etree.ElementTree import XML\n',
+ id='relative import func',
+ ),
+ pytest.param(
+ 'from xml.etree.cElementTree import XML, Element\n',
+ 'from xml.etree.ElementTree import XML, Element\n',
+ id='import multiple objects',
+ ),
+ pytest.param(
+ 'import xml.etree.cElementTree as ET',
+ 'import xml.etree.ElementTree as ET',
+ id='import with alias',
+ ),
+ ),
+)
+def test_fix_c_element_tree(s, expected):
+ assert _fix_plugins(s, settings=Settings(min_version=(3,))) == expected
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyupgrade-2.19.4/tests/features/six_test.py
new/pyupgrade-2.20.0/tests/features/six_test.py
--- old/pyupgrade-2.19.4/tests/features/six_test.py 2021-06-11
16:50:16.000000000 +0200
+++ new/pyupgrade-2.20.0/tests/features/six_test.py 2021-07-03
21:01:26.000000000 +0200
@@ -216,6 +216,13 @@
id='elide object base in with_metaclass',
),
pytest.param(
+ 'class C(six.with_metaclass(M, B,)): pass',
+
+ 'class C(B, metaclass=M): pass',
+
+ id='with_metaclass and trailing comma',
+ ),
+ pytest.param(
'@six.add_metaclass(M)\n'
'class C: pass\n',