Kaydet (Commit) 59ea508b authored tarafından Serhiy Storchaka's avatar Serhiy Storchaka

Issue #5633: Fixed timeit when the statement is a string and the setup is not.

üst 5127ed72
...@@ -120,6 +120,9 @@ class TestTimeit(unittest.TestCase): ...@@ -120,6 +120,9 @@ class TestTimeit(unittest.TestCase):
def test_timeit_callable_stmt(self): def test_timeit_callable_stmt(self):
self.timeit(self.fake_callable_stmt, self.fake_setup, number=3) self.timeit(self.fake_callable_stmt, self.fake_setup, number=3)
def test_timeit_callable_setup(self):
self.timeit(self.fake_stmt, self.fake_callable_setup, number=3)
def test_timeit_callable_stmt_and_setup(self): def test_timeit_callable_stmt_and_setup(self):
self.timeit(self.fake_callable_stmt, self.timeit(self.fake_callable_stmt,
self.fake_callable_setup, number=3) self.fake_callable_setup, number=3)
...@@ -169,6 +172,10 @@ class TestTimeit(unittest.TestCase): ...@@ -169,6 +172,10 @@ class TestTimeit(unittest.TestCase):
self.repeat(self.fake_callable_stmt, self.fake_setup, self.repeat(self.fake_callable_stmt, self.fake_setup,
repeat=3, number=5) repeat=3, number=5)
def test_repeat_callable_setup(self):
self.repeat(self.fake_stmt, self.fake_callable_setup,
repeat=3, number=5)
def test_repeat_callable_stmt_and_setup(self): def test_repeat_callable_stmt_and_setup(self):
self.repeat(self.fake_callable_stmt, self.fake_callable_setup, self.repeat(self.fake_callable_stmt, self.fake_callable_setup,
repeat=3, number=5) repeat=3, number=5)
......
...@@ -78,7 +78,7 @@ else: ...@@ -78,7 +78,7 @@ else:
# in Timer.__init__() depend on setup being indented 4 spaces and stmt # in Timer.__init__() depend on setup being indented 4 spaces and stmt
# being indented 8 spaces. # being indented 8 spaces.
template = """ template = """
def inner(_it, _timer): def inner(_it, _timer%(init)s):
%(setup)s %(setup)s
_t0 = _timer() _t0 = _timer()
for _i in _it: for _i in _it:
...@@ -132,9 +132,10 @@ class Timer: ...@@ -132,9 +132,10 @@ class Timer:
stmt = reindent(stmt, 8) stmt = reindent(stmt, 8)
if isinstance(setup, basestring): if isinstance(setup, basestring):
setup = reindent(setup, 4) setup = reindent(setup, 4)
src = template % {'stmt': stmt, 'setup': setup} src = template % {'stmt': stmt, 'setup': setup, 'init': ''}
elif hasattr(setup, '__call__'): elif hasattr(setup, '__call__'):
src = template % {'stmt': stmt, 'setup': '_setup()'} src = template % {'stmt': stmt, 'setup': '_setup()',
'init': ', _setup=_setup'}
ns['_setup'] = setup ns['_setup'] = setup
else: else:
raise ValueError("setup is neither a string nor callable") raise ValueError("setup is neither a string nor callable")
......
...@@ -26,6 +26,8 @@ Core and Builtins ...@@ -26,6 +26,8 @@ Core and Builtins
Library Library
------- -------
- Issue #5633: Fixed timeit when the statement is a string and the setup is not.
- Issue #24326: Fixed audioop.ratecv() with non-default weightB argument. - Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
Original patch by David Moore. Original patch by David Moore.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment