diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2017-11-16 07:16:24 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-16 07:16:24 (GMT) |
commit | 0a2abdfca2495291809855cf7dfc6721c9c962e3 (patch) | |
tree | 7eabd56d628252e631bc5f44dc9e4e78bd764945 /Lib/lib2to3 | |
parent | a7368ac6360246b1ef7f8f152963c2362d272183 (diff) | |
download | cpython-0a2abdfca2495291809855cf7dfc6721c9c962e3.zip cpython-0a2abdfca2495291809855cf7dfc6721c9c962e3.tar.gz cpython-0a2abdfca2495291809855cf7dfc6721c9c962e3.tar.bz2 |
bpo-30143: 2to3 now generates a code that uses abstract collection classes (#1262)
from collections.abc rather than collections.
Diffstat (limited to 'Lib/lib2to3')
-rw-r--r-- | Lib/lib2to3/fixes/fix_operator.py | 12 | ||||
-rw-r--r-- | Lib/lib2to3/tests/test_fixers.py | 8 |
2 files changed, 10 insertions, 10 deletions
diff --git a/Lib/lib2to3/fixes/fix_operator.py b/Lib/lib2to3/fixes/fix_operator.py index 592444e..0d82454 100644 --- a/Lib/lib2to3/fixes/fix_operator.py +++ b/Lib/lib2to3/fixes/fix_operator.py @@ -2,8 +2,8 @@ operator.isCallable(obj) -> hasattr(obj, '__call__') operator.sequenceIncludes(obj) -> operator.contains(obj) -operator.isSequenceType(obj) -> isinstance(obj, collections.Sequence) -operator.isMappingType(obj) -> isinstance(obj, collections.Mapping) +operator.isSequenceType(obj) -> isinstance(obj, collections.abc.Sequence) +operator.isMappingType(obj) -> isinstance(obj, collections.abc.Mapping) operator.isNumberType(obj) -> isinstance(obj, numbers.Number) operator.repeat(obj, n) -> operator.mul(obj, n) operator.irepeat(obj, n) -> operator.imul(obj, n) @@ -63,13 +63,13 @@ class FixOperator(fixer_base.BaseFix): def _irepeat(self, node, results): return self._handle_rename(node, results, "imul") - @invocation("isinstance(%s, collections.Sequence)") + @invocation("isinstance(%s, collections.abc.Sequence)") def _isSequenceType(self, node, results): - return self._handle_type2abc(node, results, "collections", "Sequence") + return self._handle_type2abc(node, results, "collections.abc", "Sequence") - @invocation("isinstance(%s, collections.Mapping)") + @invocation("isinstance(%s, collections.abc.Mapping)") def _isMappingType(self, node, results): - return self._handle_type2abc(node, results, "collections", "Mapping") + return self._handle_type2abc(node, results, "collections.abc", "Mapping") @invocation("isinstance(%s, numbers.Number)") def _isNumberType(self, node, results): diff --git a/Lib/lib2to3/tests/test_fixers.py b/Lib/lib2to3/tests/test_fixers.py index 3e1a255..e50b7da 100644 --- a/Lib/lib2to3/tests/test_fixers.py +++ b/Lib/lib2to3/tests/test_fixers.py @@ -4427,12 +4427,12 @@ class Test_operator(FixerTestCase): def test_operator_isSequenceType(self): b = "operator.isSequenceType(x)" - a = "import collections\nisinstance(x, collections.Sequence)" + a = "import collections.abc\nisinstance(x, collections.abc.Sequence)" self.check(b, a) def test_operator_isMappingType(self): b = "operator.isMappingType(x)" - a = "import collections\nisinstance(x, collections.Mapping)" + a = "import collections.abc\nisinstance(x, collections.abc.Mapping)" self.check(b, a) def test_operator_isNumberType(self): @@ -4478,12 +4478,12 @@ class Test_operator(FixerTestCase): def test_bare_operator_isSequenceType(self): s = "isSequenceType(z)" - t = "You should use 'isinstance(z, collections.Sequence)' here." + t = "You should use 'isinstance(z, collections.abc.Sequence)' here." self.warns_unchanged(s, t) def test_bare_operator_isMappingType(self): s = "isMappingType(x)" - t = "You should use 'isinstance(x, collections.Mapping)' here." + t = "You should use 'isinstance(x, collections.abc.Mapping)' here." self.warns_unchanged(s, t) def test_bare_operator_isNumberType(self): |