mirror of
https://github.com/python/cpython.git
synced 2025-10-06 15:11:58 +00:00
Issue #5633: Fixed timeit when the statement is a string and the setup is not.
This commit is contained in:
parent
fa494fd883
commit
f28fa66351
3 changed files with 13 additions and 3 deletions
|
@ -124,6 +124,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)
|
||||||
|
@ -173,6 +176,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)
|
||||||
|
|
|
@ -65,7 +65,7 @@ default_timer = time.perf_counter
|
||||||
# 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}):
|
||||||
{setup}
|
{setup}
|
||||||
_t0 = _timer()
|
_t0 = _timer()
|
||||||
for _i in _it:
|
for _i in _it:
|
||||||
|
@ -119,9 +119,10 @@ class Timer:
|
||||||
stmt = reindent(stmt, 8)
|
stmt = reindent(stmt, 8)
|
||||||
if isinstance(setup, str):
|
if isinstance(setup, str):
|
||||||
setup = reindent(setup, 4)
|
setup = reindent(setup, 4)
|
||||||
src = template.format(stmt=stmt, setup=setup)
|
src = template.format(stmt=stmt, setup=setup, init='')
|
||||||
elif callable(setup):
|
elif callable(setup):
|
||||||
src = template.format(stmt=stmt, setup='_setup()')
|
src = template.format(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")
|
||||||
|
|
|
@ -60,6 +60,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.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue