parent
80f9b14a30
commit
4c480bcac2
@ -43,6 +43,11 @@ black [OPTIONS] [SRC]...
|
|||||||
|
|
||||||
Options:
|
Options:
|
||||||
-l, --line-length INTEGER Where to wrap around. [default: 88]
|
-l, --line-length INTEGER Where to wrap around. [default: 88]
|
||||||
|
--check Don't write back the files, just return the
|
||||||
|
status. Return code 0 means nothing changed.
|
||||||
|
Return code 1 means some files were reformatted.
|
||||||
|
Return code 123 means there was an internal
|
||||||
|
error.
|
||||||
--fast / --safe If --fast given, skip temporary sanity checks.
|
--fast / --safe If --fast given, skip temporary sanity checks.
|
||||||
[default: --safe]
|
[default: --safe]
|
||||||
--version Show the version and exit.
|
--version Show the version and exit.
|
||||||
@ -253,6 +258,8 @@ You can still try but prepare to be disappointed.
|
|||||||
|
|
||||||
### 18.3a1
|
### 18.3a1
|
||||||
|
|
||||||
|
* added `--check`
|
||||||
|
|
||||||
* fixed invalid spacing of dots in relative imports (#6, #13)
|
* fixed invalid spacing of dots in relative imports (#6, #13)
|
||||||
|
|
||||||
* fixed spurious space in parenthesized set expressions (#7)
|
* fixed spurious space in parenthesized set expressions (#7)
|
||||||
|
43
black.py
43
black.py
@ -55,6 +55,15 @@ class CannotSplit(Exception):
|
|||||||
help='How many character per line to allow.',
|
help='How many character per line to allow.',
|
||||||
show_default=True,
|
show_default=True,
|
||||||
)
|
)
|
||||||
|
@click.option(
|
||||||
|
'--check',
|
||||||
|
is_flag=True,
|
||||||
|
help=(
|
||||||
|
"Don't write back the files, just return the status. Return code 0 "
|
||||||
|
"means nothing changed. Return code 1 means some files were "
|
||||||
|
"reformatted. Return code 123 means there was an internal error."
|
||||||
|
),
|
||||||
|
)
|
||||||
@click.option(
|
@click.option(
|
||||||
'--fast/--safe',
|
'--fast/--safe',
|
||||||
is_flag=True,
|
is_flag=True,
|
||||||
@ -67,7 +76,9 @@ class CannotSplit(Exception):
|
|||||||
type=click.Path(exists=True, file_okay=True, dir_okay=True, readable=True),
|
type=click.Path(exists=True, file_okay=True, dir_okay=True, readable=True),
|
||||||
)
|
)
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
def main(ctx: click.Context, line_length: int, fast: bool, src: List[str]) -> None:
|
def main(
|
||||||
|
ctx: click.Context, line_length: int, check: bool, fast: bool, src: List[str]
|
||||||
|
) -> None:
|
||||||
"""The uncompromising code formatter."""
|
"""The uncompromising code formatter."""
|
||||||
sources: List[Path] = []
|
sources: List[Path] = []
|
||||||
for s in src:
|
for s in src:
|
||||||
@ -85,7 +96,9 @@ def main(ctx: click.Context, line_length: int, fast: bool, src: List[str]) -> No
|
|||||||
p = sources[0]
|
p = sources[0]
|
||||||
report = Report()
|
report = Report()
|
||||||
try:
|
try:
|
||||||
changed = format_file_in_place(p, line_length=line_length, fast=fast)
|
changed = format_file_in_place(
|
||||||
|
p, line_length=line_length, fast=fast, write_back=not check
|
||||||
|
)
|
||||||
report.done(p, changed)
|
report.done(p, changed)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
report.failed(p, str(exc))
|
report.failed(p, str(exc))
|
||||||
@ -96,7 +109,9 @@ def main(ctx: click.Context, line_length: int, fast: bool, src: List[str]) -> No
|
|||||||
return_code = 1
|
return_code = 1
|
||||||
try:
|
try:
|
||||||
return_code = loop.run_until_complete(
|
return_code = loop.run_until_complete(
|
||||||
schedule_formatting(sources, line_length, fast, loop, executor)
|
schedule_formatting(
|
||||||
|
sources, line_length, not check, fast, loop, executor
|
||||||
|
)
|
||||||
)
|
)
|
||||||
finally:
|
finally:
|
||||||
loop.close()
|
loop.close()
|
||||||
@ -106,13 +121,14 @@ def main(ctx: click.Context, line_length: int, fast: bool, src: List[str]) -> No
|
|||||||
async def schedule_formatting(
|
async def schedule_formatting(
|
||||||
sources: List[Path],
|
sources: List[Path],
|
||||||
line_length: int,
|
line_length: int,
|
||||||
|
write_back: bool,
|
||||||
fast: bool,
|
fast: bool,
|
||||||
loop: BaseEventLoop,
|
loop: BaseEventLoop,
|
||||||
executor: Executor,
|
executor: Executor,
|
||||||
) -> int:
|
) -> int:
|
||||||
tasks = {
|
tasks = {
|
||||||
src: loop.run_in_executor(
|
src: loop.run_in_executor(
|
||||||
executor, format_file_in_place, src, line_length, fast
|
executor, format_file_in_place, src, line_length, fast, write_back
|
||||||
)
|
)
|
||||||
for src in sources
|
for src in sources
|
||||||
}
|
}
|
||||||
@ -135,15 +151,18 @@ async def schedule_formatting(
|
|||||||
return report.return_code
|
return report.return_code
|
||||||
|
|
||||||
|
|
||||||
def format_file_in_place(src: Path, line_length: int, fast: bool) -> bool:
|
def format_file_in_place(
|
||||||
|
src: Path, line_length: int, fast: bool, write_back: bool = False
|
||||||
|
) -> bool:
|
||||||
"""Format the file and rewrite if changed. Return True if changed."""
|
"""Format the file and rewrite if changed. Return True if changed."""
|
||||||
try:
|
try:
|
||||||
contents, encoding = format_file(src, line_length=line_length, fast=fast)
|
contents, encoding = format_file(src, line_length=line_length, fast=fast)
|
||||||
except NothingChanged:
|
except NothingChanged:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
with open(src, "w", encoding=encoding) as f:
|
if write_back:
|
||||||
f.write(contents)
|
with open(src, "w", encoding=encoding) as f:
|
||||||
|
f.write(contents)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
@ -1321,7 +1340,15 @@ def failed(self, src: Path, message: str) -> None:
|
|||||||
@property
|
@property
|
||||||
def return_code(self) -> int:
|
def return_code(self) -> int:
|
||||||
"""Which return code should the app use considering the current state."""
|
"""Which return code should the app use considering the current state."""
|
||||||
return 1 if self.failure_count else 0
|
# According to http://tldp.org/LDP/abs/html/exitcodes.html starting with
|
||||||
|
# 126 we have special returncodes reserved by the shell.
|
||||||
|
if self.failure_count:
|
||||||
|
return 123
|
||||||
|
|
||||||
|
elif self.change_count:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
return 0
|
||||||
|
|
||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
"""A color report of the current state.
|
"""A color report of the current state.
|
||||||
|
Loading…
Reference in New Issue
Block a user