Closes #13258: Use callable() built-in in the standard library.
diff --git a/Lib/timeit.py b/Lib/timeit.py
index 461c891..1ae59e0 100644
--- a/Lib/timeit.py
+++ b/Lib/timeit.py
@@ -127,7 +127,7 @@
if isinstance(setup, str):
setup = reindent(setup, 4)
src = template % {'stmt': stmt, 'setup': setup}
- elif hasattr(setup, '__call__'):
+ elif callable(setup):
src = template % {'stmt': stmt, 'setup': '_setup()'}
ns['_setup'] = setup
else:
@@ -136,13 +136,13 @@
code = compile(src, dummy_src_name, "exec")
exec(code, globals(), ns)
self.inner = ns["inner"]
- elif hasattr(stmt, '__call__'):
+ elif callable(stmt):
self.src = None
if isinstance(setup, str):
_setup = setup
def setup():
exec(_setup, globals(), ns)
- elif not hasattr(setup, '__call__'):
+ elif not callable(setup):
raise ValueError("setup is neither a string nor callable")
self.inner = _template_func(setup, stmt)
else: