From f40cf8e03019ad85c49f2354cf5ea7611a4ade27 Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Fri, 23 May 2014 15:43:52 +0200 Subject: [PATCH 1/2] Accept 'auto' for --jobs, and default to cpu_count(); issue #151 --- flake8/engine.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/flake8/engine.py b/flake8/engine.py index 13bfa12..f87bc82 100644 --- a/flake8/engine.py +++ b/flake8/engine.py @@ -51,8 +51,9 @@ def get_parser(): if multiprocessing: parser.config_options.append('jobs') - parser.add_option('-j', '--jobs', type='int', default=1, - help="number of jobs to run simultaneously") + parser.add_option('-j', '--jobs', type='string', default='', + help="number of jobs to run simultaneously, " + "or 'auto'") parser.add_option('--exit-zero', action='store_true', help="exit with code 0 even if there are errors") @@ -87,11 +88,20 @@ def get_style_guide(**kwargs): for options_hook in options_hooks: options_hook(options) - if multiprocessing and options.jobs > 1: - reporter = BaseQReport if options.quiet else QueueReport - report = styleguide.init_report(reporter) - report.input_file = styleguide.input_file - styleguide.runner = report.task_queue.put + if multiprocessing and options.jobs: + if options.jobs.isdigit(): + n_jobs = int(options.jobs) + else: + try: + n_jobs = multiprocessing.cpu_count() + except NotImplementedError: + n_jobs = 1 + if n_jobs > 1: + options.jobs = n_jobs + reporter = BaseQReport if options.quiet else QueueReport + report = styleguide.init_report(reporter) + report.input_file = styleguide.input_file + styleguide.runner = report.task_queue.put return styleguide From 573a217d6c7b9978c152a8116e4edea7ce086a4d Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Fri, 23 May 2014 15:55:59 +0200 Subject: [PATCH 2/2] Fix the test suite --- flake8/tests/test_engine.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flake8/tests/test_engine.py b/flake8/tests/test_engine.py index 1032bd1..5f9d27b 100644 --- a/flake8/tests/test_engine.py +++ b/flake8/tests/test_engine.py @@ -34,7 +34,7 @@ class TestEngine(unittest.TestCase): m = mock.Mock() with mock.patch('flake8.engine.StyleGuide') as StyleGuide: with mock.patch('flake8.engine.get_parser') as get_parser: - StyleGuide.return_value.options.jobs = 42 + StyleGuide.return_value.options.jobs = '42' get_parser.return_value = (m, []) engine.get_style_guide(foo='bar') get_parser.assert_called_once_with()