summaryrefslogtreecommitdiffstats
path: root/Lib/lib2to3
diff options
context:
space:
mode:
authorDong-hee Na <donghee.na92@gmail.com>2017-11-28 16:26:56 (GMT)
committerÉric Araujo <merwok@users.noreply.github.com>2017-11-28 16:26:56 (GMT)
commita489599793f9b00ddc2c68e2ce3bce9cbb2c09a2 (patch)
treea10f20e7292be409e720293bed9dbed87281c330 /Lib/lib2to3
parent598ceae876ff4a23072e59945597e945583de4ab (diff)
downloadcpython-a489599793f9b00ddc2c68e2ce3bce9cbb2c09a2.zip
cpython-a489599793f9b00ddc2c68e2ce3bce9cbb2c09a2.tar.gz
cpython-a489599793f9b00ddc2c68e2ce3bce9cbb2c09a2.tar.bz2
bpo-32046: Update 2to3 when converts operator.isCallable(obj). (#4417)
Diffstat (limited to 'Lib/lib2to3')
-rw-r--r--Lib/lib2to3/fixes/fix_operator.py7
-rw-r--r--Lib/lib2to3/tests/test_fixers.py4
2 files changed, 5 insertions, 6 deletions
diff --git a/Lib/lib2to3/fixes/fix_operator.py b/Lib/lib2to3/fixes/fix_operator.py
index 0d82454..d303cd2 100644
--- a/Lib/lib2to3/fixes/fix_operator.py
+++ b/Lib/lib2to3/fixes/fix_operator.py
@@ -1,6 +1,6 @@
"""Fixer for operator functions.
-operator.isCallable(obj) -> hasattr(obj, '__call__')
+operator.isCallable(obj) -> callable(obj)
operator.sequenceIncludes(obj) -> operator.contains(obj)
operator.isSequenceType(obj) -> isinstance(obj, collections.abc.Sequence)
operator.isMappingType(obj) -> isinstance(obj, collections.abc.Mapping)
@@ -49,11 +49,10 @@ class FixOperator(fixer_base.BaseFix):
def _sequenceIncludes(self, node, results):
return self._handle_rename(node, results, "contains")
- @invocation("hasattr(%s, '__call__')")
+ @invocation("callable(%s)")
def _isCallable(self, node, results):
obj = results["obj"]
- args = [obj.clone(), String(", "), String("'__call__'")]
- return Call(Name("hasattr"), args, prefix=node.prefix)
+ return Call(Name("callable"), [obj.clone()], prefix=node.prefix)
@invocation("operator.mul(%s)")
def _repeat(self, node, results):
diff --git a/Lib/lib2to3/tests/test_fixers.py b/Lib/lib2to3/tests/test_fixers.py
index e50b7da..bfe7a23 100644
--- a/Lib/lib2to3/tests/test_fixers.py
+++ b/Lib/lib2to3/tests/test_fixers.py
@@ -4409,7 +4409,7 @@ class Test_operator(FixerTestCase):
def test_operator_isCallable(self):
b = "operator.isCallable(x)"
- a = "hasattr(x, '__call__')"
+ a = "callable(x)"
self.check(b, a)
def test_operator_sequenceIncludes(self):
@@ -4468,7 +4468,7 @@ class Test_operator(FixerTestCase):
def test_bare_isCallable(self):
s = "isCallable(x)"
- t = "You should use 'hasattr(x, '__call__')' here."
+ t = "You should use 'callable(x)' here."
self.warns_unchanged(s, t)
def test_bare_sequenceIncludes(self):