From 0fd353f1639c580c32599bf435902d08dbd9a560 Mon Sep 17 00:00:00 2001 From: Fergus Mitchell Date: Wed, 29 Sep 2021 17:50:44 +0100 Subject: [PATCH 1/1] Add --workers CLI parameter (fixes #2513) (#2514) Fixes #2513 --- CHANGES.md | 4 ++++ src/black/__init__.py | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 61d3178..04e9edf 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,10 @@ ## Unreleased +### _Black_ + +- Add new `--workers` parameter (#2514) + ### _Blackd_ - Remove dependency on aiohttp-cors (#2500) diff --git a/src/black/__init__.py b/src/black/__init__.py index 7fed135..83a3923 100644 --- a/src/black/__init__.py +++ b/src/black/__init__.py @@ -95,6 +95,8 @@ class WriteBack(Enum): # Legacy name, left for integrations. FileMode = Mode +DEFAULT_WORKERS = os.cpu_count() + def read_pyproject_toml( ctx: click.Context, param: click.Parameter, value: Optional[str] @@ -318,6 +320,14 @@ def validate_regex( "editors that rely on using stdin." ), ) +@click.option( + "-W", + "--workers", + type=click.IntRange(min=1), + default=DEFAULT_WORKERS, + show_default=True, + help="Number of parallel workers", +) @click.option( "-q", "--quiet", @@ -383,6 +393,7 @@ def main( extend_exclude: Optional[Pattern], force_exclude: Optional[Pattern], stdin_filename: Optional[str], + workers: int, src: Tuple[str, ...], config: Optional[str], ) -> None: @@ -468,6 +479,7 @@ def main( write_back=write_back, mode=mode, report=report, + workers=workers, ) if verbose or not quiet: @@ -644,12 +656,17 @@ def reformat_one( def reformat_many( - sources: Set[Path], fast: bool, write_back: WriteBack, mode: Mode, report: "Report" + sources: Set[Path], + fast: bool, + write_back: WriteBack, + mode: Mode, + report: "Report", + workers: Optional[int], ) -> None: """Reformat multiple files using a ProcessPoolExecutor.""" executor: Executor loop = asyncio.get_event_loop() - worker_count = os.cpu_count() + worker_count = workers if workers is not None else DEFAULT_WORKERS if sys.platform == "win32": # Work around https://bugs.python.org/issue26903 worker_count = min(worker_count, 60) -- 2.39.2