Refactor reformat_one
and schedule_formatting
to decrease state
This commit is contained in:
parent
c012c70176
commit
3ddf73337d
41
black.py
41
black.py
@ -191,43 +191,38 @@ def main(
|
|||||||
write_back = WriteBack.DIFF
|
write_back = WriteBack.DIFF
|
||||||
else:
|
else:
|
||||||
write_back = WriteBack.YES
|
write_back = WriteBack.YES
|
||||||
|
report = Report(check=check, quiet=quiet)
|
||||||
if len(sources) == 0:
|
if len(sources) == 0:
|
||||||
ctx.exit(0)
|
ctx.exit(0)
|
||||||
return
|
return
|
||||||
|
|
||||||
elif len(sources) == 1:
|
elif len(sources) == 1:
|
||||||
return_code = reformat_one(
|
reformat_one(sources[0], line_length, fast, write_back, report)
|
||||||
sources[0], line_length, fast, quiet, write_back, check
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
executor = ProcessPoolExecutor(max_workers=os.cpu_count())
|
executor = ProcessPoolExecutor(max_workers=os.cpu_count())
|
||||||
return_code = 1
|
|
||||||
try:
|
try:
|
||||||
return_code = loop.run_until_complete(
|
loop.run_until_complete(
|
||||||
schedule_formatting(
|
schedule_formatting(
|
||||||
sources, line_length, write_back, fast, quiet, loop, executor, check
|
sources, line_length, fast, write_back, report, loop, executor
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
finally:
|
finally:
|
||||||
shutdown(loop)
|
shutdown(loop)
|
||||||
ctx.exit(return_code)
|
if not quiet:
|
||||||
|
out("All done! ✨ 🍰 ✨")
|
||||||
|
click.echo(str(report))
|
||||||
|
ctx.exit(report.return_code)
|
||||||
|
|
||||||
|
|
||||||
def reformat_one(
|
def reformat_one(
|
||||||
src: Path,
|
src: Path, line_length: int, fast: bool, write_back: WriteBack, report: "Report"
|
||||||
line_length: int,
|
) -> None:
|
||||||
fast: bool,
|
|
||||||
quiet: bool,
|
|
||||||
write_back: WriteBack,
|
|
||||||
check: bool,
|
|
||||||
) -> int:
|
|
||||||
"""Reformat a single file under `src` without spawning child processes.
|
"""Reformat a single file under `src` without spawning child processes.
|
||||||
|
|
||||||
If `quiet` is True, non-error messages are not output. `line_length`,
|
If `quiet` is True, non-error messages are not output. `line_length`,
|
||||||
`write_back`, and `fast` options are passed to :func:`format_file_in_place`.
|
`write_back`, and `fast` options are passed to :func:`format_file_in_place`.
|
||||||
"""
|
"""
|
||||||
report = Report(check=check, quiet=quiet)
|
|
||||||
try:
|
try:
|
||||||
changed = Changed.NO
|
changed = Changed.NO
|
||||||
if not src.is_file() and str(src) == "-":
|
if not src.is_file() and str(src) == "-":
|
||||||
@ -254,19 +249,17 @@ def reformat_one(
|
|||||||
report.done(src, changed)
|
report.done(src, changed)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
report.failed(src, str(exc))
|
report.failed(src, str(exc))
|
||||||
return report.return_code
|
|
||||||
|
|
||||||
|
|
||||||
async def schedule_formatting(
|
async def schedule_formatting(
|
||||||
sources: List[Path],
|
sources: List[Path],
|
||||||
line_length: int,
|
line_length: int,
|
||||||
write_back: WriteBack,
|
|
||||||
fast: bool,
|
fast: bool,
|
||||||
quiet: bool,
|
write_back: WriteBack,
|
||||||
|
report: "Report",
|
||||||
loop: BaseEventLoop,
|
loop: BaseEventLoop,
|
||||||
executor: Executor,
|
executor: Executor,
|
||||||
check: bool,
|
) -> None:
|
||||||
) -> int:
|
|
||||||
"""Run formatting of `sources` in parallel using the provided `executor`.
|
"""Run formatting of `sources` in parallel using the provided `executor`.
|
||||||
|
|
||||||
(Use ProcessPoolExecutors for actual parallelism.)
|
(Use ProcessPoolExecutors for actual parallelism.)
|
||||||
@ -274,7 +267,6 @@ async def schedule_formatting(
|
|||||||
`line_length`, `write_back`, and `fast` options are passed to
|
`line_length`, `write_back`, and `fast` options are passed to
|
||||||
:func:`format_file_in_place`.
|
:func:`format_file_in_place`.
|
||||||
"""
|
"""
|
||||||
report = Report(check=check, quiet=quiet)
|
|
||||||
cache: Cache = {}
|
cache: Cache = {}
|
||||||
if write_back != WriteBack.DIFF:
|
if write_back != WriteBack.DIFF:
|
||||||
cache = read_cache()
|
cache = read_cache()
|
||||||
@ -319,16 +311,9 @@ async def schedule_formatting(
|
|||||||
|
|
||||||
if cancelled:
|
if cancelled:
|
||||||
await asyncio.gather(*cancelled, loop=loop, return_exceptions=True)
|
await asyncio.gather(*cancelled, loop=loop, return_exceptions=True)
|
||||||
elif not quiet:
|
|
||||||
out("All done! ✨ 🍰 ✨")
|
|
||||||
if not quiet:
|
|
||||||
click.echo(str(report))
|
|
||||||
|
|
||||||
if write_back != WriteBack.DIFF and formatted:
|
if write_back != WriteBack.DIFF and formatted:
|
||||||
write_cache(cache, formatted)
|
write_cache(cache, formatted)
|
||||||
|
|
||||||
return report.return_code
|
|
||||||
|
|
||||||
|
|
||||||
def format_file_in_place(
|
def format_file_in_place(
|
||||||
src: Path,
|
src: Path,
|
||||||
|
Loading…
Reference in New Issue
Block a user