Coverage for /home/runner/work/coxbuild/coxbuild/src/coxbuild/extensions/python/format.py: 0%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from pathlib import Path
3from coxbuild import get_working_directory
4from coxbuild.schema import depend, group, precond, run, task
6from . import grouped
7from .package import hasPackages, upgradePackages
9subgrouped = group("format")
12@grouped
13@subgrouped
14@precond(lambda: not hasPackages({"autopep8": "*", "isort": "*"}))
15@task
16def restore():
17 """Restore Python format tools."""
18 upgradePackages("autopep8", "isort")
21@grouped
22@subgrouped
23@depend(restore)
24@task
25def autopep8(path: Path | None = None):
26 """Use autopep8 to format Python code."""
27 run(["autopep8", "-r", "--in-place", str(path or get_working_directory())])
30@grouped
31@subgrouped
32@depend(restore)
33@task
34def isort(path: Path | None = None):
35 """Use isort to format Python imports."""
36 for file in (path or get_working_directory()).glob("**/*.py"):
37 if file.is_dir():
38 continue
39 run(["isort", str(file)])
42@grouped
43@subgrouped
44@depend(autopep8, isort)
45@task
46def format():
47 """Format Python code."""
48 pass