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-09-09 23:07:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pyupgrade (Old) and /work/SRC/openSUSE:Factory/.python-pyupgrade.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyupgrade" Thu Sep 9 23:07:45 2021 rev:15 rq:917719 version:2.24.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pyupgrade/python-pyupgrade.changes 2021-08-11 11:47:53.441697892 +0200 +++ /work/SRC/openSUSE:Factory/.python-pyupgrade.new.1899/python-pyupgrade.changes 2021-09-09 23:08:10.644875054 +0200 @@ -1,0 +2,7 @@ +Fri Aug 20 19:49:12 UTC 2021 - Sebastian Wagner <sebix+novell....@sebix.at> + +- update to version 2.24.0: + - Rewrite unittest deprecated aliases + Fixes #519 + +------------------------------------------------------------------- Old: ---- python-pyupgrade-2.23.3.tar.gz New: ---- python-pyupgrade-2.24.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pyupgrade.spec ++++++ --- /var/tmp/diff_new_pack.wxxre5/_old 2021-09-09 23:08:11.128875616 +0200 +++ /var/tmp/diff_new_pack.wxxre5/_new 2021-09-09 23:08:11.128875616 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-pyupgrade -Version: 2.23.3 +Version: 2.24.0 Release: 0 Summary: A tool to automatically upgrade syntax for newer versions License: MIT ++++++ python-pyupgrade-2.23.3.tar.gz -> python-pyupgrade-2.24.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyupgrade-2.23.3/.pre-commit-config.yaml new/pyupgrade-2.24.0/.pre-commit-config.yaml --- old/pyupgrade-2.23.3/.pre-commit-config.yaml 2021-08-04 19:50:42.000000000 +0200 +++ new/pyupgrade-2.24.0/.pre-commit-config.yaml 2021-08-20 00:33:53.000000000 +0200 @@ -34,7 +34,7 @@ - id: add-trailing-comma args: [--py36-plus] - repo: https://github.com/asottile/pyupgrade - rev: v2.23.3 + rev: v2.24.0 hooks: - id: pyupgrade args: [--py36-plus] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyupgrade-2.23.3/README.md new/pyupgrade-2.24.0/README.md --- old/pyupgrade-2.23.3/README.md 2021-08-04 19:50:42.000000000 +0200 +++ new/pyupgrade-2.24.0/README.md 2021-08-20 00:33:53.000000000 +0200 @@ -20,7 +20,7 @@ ```yaml - repo: https://github.com/asottile/pyupgrade - rev: v2.23.3 + rev: v2.24.0 hooks: - id: pyupgrade ``` @@ -165,6 +165,25 @@ [python-modernize/python-modernize#178]: https://github.com/python-modernize/python-modernize/issues/178 +### unittest deprecated aliases + +Rewrites [deprecated unittest method aliases](https://docs.python.org/3/library/unittest.html#deprecated-aliases) to their non-deprecated forms. + +Availability: +- More deprecated aliases are rewritten with `--py3-plus` + +```diff + from unittest import TestCase + + + class MyTests(TestCase): + def test_something(self): +- self.failUnlessEqual(1, 1) ++ self.assertEqual(1, 1) +- self.assertEquals(1, 1) ++ self.assertEqual(1, 1) +``` + ### `super()` calls Availability: @@ -482,7 +501,6 @@ +float ``` - ### `typing.NamedTuple` / `typing.TypedDict` py36+ syntax Availability: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyupgrade-2.23.3/pyupgrade/_plugins/unittest_aliases.py new/pyupgrade-2.24.0/pyupgrade/_plugins/unittest_aliases.py --- old/pyupgrade-2.23.3/pyupgrade/_plugins/unittest_aliases.py 1970-01-01 01:00:00.000000000 +0100 +++ new/pyupgrade-2.24.0/pyupgrade/_plugins/unittest_aliases.py 2021-08-20 00:33:53.000000000 +0200 @@ -0,0 +1,60 @@ +import ast +import functools +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_name + + +METHOD_MAPPING_PY27 = { + 'assertEquals': 'assertEqual', + 'failUnlessEqual': 'assertEqual', + 'failIfEqual': 'assertNotEqual', + 'failUnless': 'assertTrue', + 'assert_': 'assertTrue', + 'failIf': 'assertFalse', + 'failUnlessRaises': 'assertRaises', + 'failUnlessAlmostEqual': 'assertAlmostEqual', + 'failIfAlmostEqual': 'assertNotAlmostEqual', +} + +METHOD_MAPPING_PY35_PLUS = { + **METHOD_MAPPING_PY27, + 'assertNotEquals': 'assertNotEqual', + 'assertAlmostEquals': 'assertAlmostEqual', + 'assertNotAlmostEquals': 'assertNotAlmostEqual', + 'assertRegexpMatches': 'assertRegex', + 'assertNotRegexpMatches': 'assertNotRegex', + 'assertRaisesRegexp': 'assertRaisesRegex', +} + + +@register(ast.Call) +def visit_Call( + state: State, + node: ast.Call, + parent: ast.AST, +) -> Iterable[Tuple[Offset, TokenFunc]]: + if state.settings.min_version >= (3,): + method_mapping = METHOD_MAPPING_PY35_PLUS + else: + method_mapping = METHOD_MAPPING_PY27 + + if ( + isinstance(node.func, ast.Attribute) and + isinstance(node.func.value, ast.Name) and + node.func.value.id == 'self' and + node.func.attr in method_mapping + ): + func = functools.partial( + replace_name, + name=node.func.attr, + new=f'self.{method_mapping[node.func.attr]}', + ) + yield ast_to_offset(node.func), func diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyupgrade-2.23.3/setup.cfg new/pyupgrade-2.24.0/setup.cfg --- old/pyupgrade-2.23.3/setup.cfg 2021-08-04 19:50:42.000000000 +0200 +++ new/pyupgrade-2.24.0/setup.cfg 2021-08-20 00:33:53.000000000 +0200 @@ -1,6 +1,6 @@ [metadata] name = pyupgrade -version = 2.23.3 +version = 2.24.0 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.23.3/tests/features/unittest_aliases_test.py new/pyupgrade-2.24.0/tests/features/unittest_aliases_test.py --- old/pyupgrade-2.23.3/tests/features/unittest_aliases_test.py 1970-01-01 01:00:00.000000000 +0100 +++ new/pyupgrade-2.24.0/tests/features/unittest_aliases_test.py 2021-08-20 00:33:53.000000000 +0200 @@ -0,0 +1,63 @@ +import pytest + +from pyupgrade._data import Settings +from pyupgrade._main import _fix_plugins + + +@pytest.mark.parametrize( + ('s',), + ( + pytest.param( + 'class ExampleTests:\n' + ' def test_something(self):\n' + ' self.assertEqual(1, 1)\n', + id='not a deprecated alias', + ), + pytest.param( + 'class ExampleTests:\n' + ' def test_something(self):\n' + ' self.assertNotEquals(1, 2)\n', + id='not python 3+', + ), + ), +) +def test_fix_unittest_aliases_noop(s): + assert _fix_plugins(s, settings=Settings(min_version=(2, 7))) == s + + +@pytest.mark.parametrize( + ('s', 'expected'), + ( + ( + 'class ExampleTests:\n' + ' def test_something(self):\n' + ' self.assertEquals(1, 1)\n', + + 'class ExampleTests:\n' + ' def test_something(self):\n' + ' self.assertEqual(1, 1)\n', + ), + ), +) +def test_fix_unittest_aliases_py27(s, expected): + ret = _fix_plugins(s, settings=Settings(min_version=(2, 7))) + assert ret == expected + + +@pytest.mark.parametrize( + ('s', 'expected'), + ( + ( + 'class ExampleTests:\n' + ' def test_something(self):\n' + ' self.assertNotEquals(1, 2)\n', + + 'class ExampleTests:\n' + ' def test_something(self):\n' + ' self.assertNotEqual(1, 2)\n', + ), + ), +) +def test_fix_unittest_aliases_py3(s, expected): + ret = _fix_plugins(s, settings=Settings(min_version=(3,))) + assert ret == expected