Skip to content

Commit 4e4fba1

Browse files
committed
ignore options after statements
1 parent 1b685e3 commit 4e4fba1

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Lib/test/test_timeit.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,14 @@ def test_main_exception_fixed_reps(self):
353353
s = self.run_main(switches=['-n1', '1/0'])
354354
self.assert_exc_string(error_stringio.getvalue(), 'ZeroDivisionError')
355355

356+
def test_main_with_option_like_at_the_end(self):
357+
with captured_stderr() as s:
358+
self.run_main(switches=['-n1', '1 + 1', '-n1'])
359+
self.assert_exc_string(s.getvalue(), "NameError: name 'n1' is not defined")
360+
361+
out = self.run_main(switches=['-n2', '-r2', 'n2=1', '-n2'])
362+
self.assertEqual(out, "2 loops, best of 2: 1 sec per loop\n")
363+
356364
def autorange(self, seconds_per_increment=1/1024, callback=None):
357365
timer = FakeTimer(seconds_per_increment=seconds_per_increment)
358366
t = timeit.Timer(stmt=self.fake_stmt, setup=self.fake_setup, timer=timer)

Lib/timeit.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,9 @@ def _make_parser():
271271
help="separate options from statement; "
272272
"use when statement starts with -",
273273
)
274+
# use argparse.REMAINDER to ignore option-like argument found at the end
274275
group.add_argument(
275-
"statement", nargs="*",
276+
"statement", nargs=argparse.REMAINDER,
276277
help="statement to be timed (default: 'pass')",
277278
)
278279
return parser

0 commit comments

Comments
 (0)