]>
git.madduck.net Git - etc/vim.git/blobdiff - black.py
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
from blib2to3.pgen2 import driver, token
from blib2to3.pgen2.parse import ParseError
from blib2to3.pgen2 import driver, token
from blib2to3.pgen2.parse import ParseError
DEFAULT_LINE_LENGTH = 88
# types
syms = pygram.python_symbols
DEFAULT_LINE_LENGTH = 88
# types
syms = pygram.python_symbols
is_flag=True,
help="If --fast given, skip temporary sanity checks. [default: --safe]",
)
is_flag=True,
help="If --fast given, skip temporary sanity checks. [default: --safe]",
)
+@click.option(
+ "-q",
+ "--quiet",
+ is_flag=True,
+ help=(
+ "Don't emit non-error messages to stderr. Errors are still emitted, "
+ "silence those with 2>/dev/null."
+ ),
+)
@click.version_option(version=__version__)
@click.argument(
"src",
@click.version_option(version=__version__)
@click.argument(
"src",
check: bool,
diff: bool,
fast: bool,
check: bool,
diff: bool,
fast: bool,
src: List[str],
) -> None:
"""The uncompromising code formatter."""
src: List[str],
) -> None:
"""The uncompromising code formatter."""
ctx.exit(0)
elif len(sources) == 1:
p = sources[0]
ctx.exit(0)
elif len(sources) == 1:
p = sources[0]
- report = Report(check=check)
+ report = Report(check=check, quiet=quiet )
try:
if not p.is_file() and str(p) == "-":
changed = format_stdin_to_stdout(
try:
if not p.is_file() and str(p) == "-":
changed = format_stdin_to_stdout(
try:
return_code = loop.run_until_complete(
schedule_formatting(
try:
return_code = loop.run_until_complete(
schedule_formatting(
- sources, line_length, write_back, fast, loop, executor
+ sources, line_length, write_back, fast, quiet, loop, executor
line_length: int,
write_back: WriteBack,
fast: bool,
line_length: int,
write_back: WriteBack,
fast: bool,
loop: BaseEventLoop,
executor: Executor,
) -> int:
loop: BaseEventLoop,
executor: Executor,
) -> int:
loop.add_signal_handler(signal.SIGTERM, cancel, _task_values)
await asyncio.wait(tasks.values())
cancelled = []
loop.add_signal_handler(signal.SIGTERM, cancel, _task_values)
await asyncio.wait(tasks.values())
cancelled = []
- report = Report(check=not write_back )
+ report = Report(check=write_back is WriteBack.NO, quiet=quiet )
for src, task in tasks.items():
if not task.done():
report.failed(src, "timed out, cancelling")
for src, task in tasks.items():
if not task.done():
report.failed(src, "timed out, cancelling")
report.done(src, task.result())
if cancelled:
await asyncio.gather(*cancelled, loop=loop, return_exceptions=True)
report.done(src, task.result())
if cancelled:
await asyncio.gather(*cancelled, loop=loop, return_exceptions=True)
- click.echo(str(report))
+ if not quiet:
+ click.echo(str(report))
return report.return_code
return report.return_code
yield from self.line()
yield from self.visit(node)
yield from self.line()
yield from self.visit(node)
+ if node.type == token.ENDMARKER:
+ # somebody decided not to put a final `# fmt: on`
+ yield from self.line()
+
def __attrs_post_init__(self) -> None:
"""You are in a twisty little maze of passages."""
v = self.visit_stmt
def __attrs_post_init__(self) -> None:
"""You are in a twisty little maze of passages."""
v = self.visit_stmt
raise FormatOn(consumed)
if comment in {"# fmt: off", "# yapf: disable"}:
raise FormatOn(consumed)
if comment in {"# fmt: off", "# yapf: disable"}:
- raise FormatOff(consumed)
+ if comment_type == STANDALONE_COMMENT:
+ raise FormatOff(consumed)
+
+ prev = preceding_leaf(leaf)
+ if not prev or prev.type in WHITESPACE: # standalone comment in disguise
+ raise FormatOff(consumed)
class Report:
"""Provides a reformatting counter. Can be rendered with `str(report)`."""
check: bool = False
class Report:
"""Provides a reformatting counter. Can be rendered with `str(report)`."""
check: bool = False
change_count: int = 0
same_count: int = 0
failure_count: int = 0
change_count: int = 0
same_count: int = 0
failure_count: int = 0
"""Increment the counter for successful reformatting. Write out a message."""
if changed:
reformatted = "would reformat" if self.check else "reformatted"
"""Increment the counter for successful reformatting. Write out a message."""
if changed:
reformatted = "would reformat" if self.check else "reformatted"
- out(f"{reformatted} {src}")
+ if not self.quiet:
+ out(f"{reformatted} {src}")
self.change_count += 1
else:
self.change_count += 1
else:
- out(f"{src} already well formatted, good job.", bold=False)
+ if not self.quiet:
+ out(f"{src} already well formatted, good job.", bold=False)
self.same_count += 1
def failed(self, src: Path, message: str) -> None:
self.same_count += 1
def failed(self, src: Path, message: str) -> None: