|
1 | 1 | """Fixer for operator functions. |
2 | 2 | |
3 | | -operator.isCallable(obj) -> hasattr(obj, '__call__') |
| 3 | +operator.isCallable(obj) -> callable(obj) |
4 | 4 | operator.sequenceIncludes(obj) -> operator.contains(obj) |
5 | 5 | operator.isSequenceType(obj) -> isinstance(obj, collections.abc.Sequence) |
6 | 6 | operator.isMappingType(obj) -> isinstance(obj, collections.abc.Mapping) |
@@ -49,11 +49,10 @@ def transform(self, node, results):
|
49 | 49 | def _sequenceIncludes(self, node, results): |
50 | 50 | return self._handle_rename(node, results, "contains") |
51 | 51 | |
52 | | -@invocation("hasattr(%s, '__call__')") |
| 52 | +@invocation("callable(%s)") |
53 | 53 | def _isCallable(self, node, results): |
54 | 54 | obj = results["obj"] |
55 | | -args = [obj.clone(), String(", "), String("'__call__'")] |
56 | | -return Call(Name("hasattr"), args, prefix=node.prefix) |
| 55 | +return Call(Name("callable"), [obj.clone()], prefix=node.prefix) |
57 | 56 | |
58 | 57 | @invocation("operator.mul(%s)") |
59 | 58 | def _repeat(self, node, results): |
|