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 <sebix+novell....@sebix.at>
+
+- 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
+
+
+@pytest.mark.parametrize(
+    ('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
+
+
+@pytest.mark.parametrize(
+    ('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',
 

Reply via email to