# HG changeset patch
# User Pierre-Yves David <pierre-yves.da...@octobus.net>
# Date 1570460331 14400
#      Mon Oct 07 10:58:51 2019 -0400
# Node ID f243703025e2ba5a53feb6f8ca8f029b6e186194
# Parent  7054fd370430ae76b07ff5f68d0ab8df9de70fc5
# EXP-Topic blackgnarok-bytemageddon
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 
f243703025e2
formatting: run black on all file again

Apparently, since the blackgnarok, we divergence from the expected formatting.

Formatted using::

  grey.py -l 80 -t py33 -S $(hg files 'set:**.py - mercurial/thirdparty/** - 
"contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**')

# skip-blame mass-reformatting only

# no-check-commit reformats foo_bar functions

diff --git a/contrib/grey.py b/contrib/grey.py
--- a/contrib/grey.py
+++ b/contrib/grey.py
@@ -55,9 +55,7 @@ from blib2to3.pgen2.parse import ParseEr
 __version__ = '19.3b1.dev95+gdc1add6.d20191005'
 
 DEFAULT_LINE_LENGTH = 88
-DEFAULT_EXCLUDES = (
-    
r"/(\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|_build|buck-out|build|dist)/"
-)
+DEFAULT_EXCLUDES = 
r"/(\.eggs|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|_build|buck-out|build|dist)/"
 DEFAULT_INCLUDES = r"\.pyi?$"
 CACHE_DIR = Path(user_cache_dir("black", version=__version__))
 
@@ -196,7 +194,9 @@ class FileMode:
         if self.target_versions:
             version_str = ",".join(
                 str(version.value)
-                for version in sorted(self.target_versions, key=lambda v: 
v.value)
+                for version in sorted(
+                    self.target_versions, key=lambda v: v.value
+                )
             )
         else:
             version_str = "-"
@@ -209,12 +209,18 @@ class FileMode:
         return ".".join(parts)
 
 
-def supports_feature(target_versions: Set[TargetVersion], feature: Feature) -> 
bool:
-    return all(feature in VERSION_TO_FEATURES[version] for version in 
target_versions)
+def supports_feature(
+    target_versions: Set[TargetVersion], feature: Feature
+) -> bool:
+    return all(
+        feature in VERSION_TO_FEATURES[version] for version in target_versions
+    )
 
 
 def read_pyproject_toml(
-    ctx: click.Context, param: click.Parameter, value: Union[str, int, bool, 
None]
+    ctx: click.Context,
+    param: click.Parameter,
+    value: Union[str, int, bool, None],
 ) -> Optional[str]:
     """Inject Black configuration from "pyproject.toml" into defaults in `ctx`.
 
@@ -250,7 +256,9 @@ def read_pyproject_toml(
 
 
 @click.command(context_settings=dict(help_option_names=["-h", "--help"]))
-@click.option("-c", "--code", type=str, help="Format the code passed in as a 
string.")
+@click.option(
+    "-c", "--code", type=str, help="Format the code passed in as a string."
+)
 @click.option(
     "-l",
     "--line-length",
@@ -361,14 +369,22 @@ def read_pyproject_toml(
     "src",
     nargs=-1,
     type=click.Path(
-        exists=True, file_okay=True, dir_okay=True, readable=True, 
allow_dash=True
+        exists=True,
+        file_okay=True,
+        dir_okay=True,
+        readable=True,
+        allow_dash=True,
     ),
     is_eager=True,
 )
 @click.option(
     "--config",
     type=click.Path(
-        exists=False, file_okay=True, dir_okay=False, readable=True, 
allow_dash=False
+        exists=False,
+        file_okay=True,
+        dir_okay=False,
+        readable=True,
+        allow_dash=False,
     ),
     is_eager=True,
     callback=read_pyproject_toml,
@@ -439,7 +455,9 @@ def main(
         p = Path(s)
         if p.is_dir():
             sources.update(
-                gen_python_files_in_dir(p, root, include_regex, exclude_regex, 
report)
+                gen_python_files_in_dir(
+                    p, root, include_regex, exclude_regex, report
+                )
             )
         elif p.is_file() or s == "-":
             # if a file was explicitly given, we don't care about its extension
@@ -461,7 +479,11 @@ def main(
         )
     else:
         reformat_many(
-            sources=sources, fast=fast, write_back=write_back, mode=mode, 
report=report
+            sources=sources,
+            fast=fast,
+            write_back=write_back,
+            mode=mode,
+            report=report,
         )
 
     if verbose or not quiet:
@@ -470,7 +492,9 @@ def main(
     ctx.exit(report.return_code)
 
 
-def path_empty(src: Tuple[str], quiet: bool, verbose: bool, ctx: 
click.Context) -> None:
+def path_empty(
+    src: Tuple[str], quiet: bool, verbose: bool, ctx: click.Context
+) -> None:
     """
     Exit if there is no `src` provided for formatting
     """
@@ -481,7 +505,11 @@ def path_empty(src: Tuple[str], quiet: b
 
 
 def reformat_one(
-    src: Path, fast: bool, write_back: WriteBack, mode: FileMode, report: 
"Report"
+    src: Path,
+    fast: bool,
+    write_back: WriteBack,
+    mode: FileMode,
+    report: "Report",
 ) -> None:
     """Reformat a single file under `src` without spawning child processes.
 
@@ -491,22 +519,26 @@ def reformat_one(
     try:
         changed = Changed.NO
         if not src.is_file() and str(src) == "-":
-            if format_stdin_to_stdout(fast=fast, write_back=write_back, 
mode=mode):
+            if format_stdin_to_stdout(
+                fast=fast, write_back=write_back, mode=mode
+            ):
                 changed = Changed.YES
         else:
             cache: Cache = {}
             if write_back != WriteBack.DIFF:
                 cache = read_cache(mode)
                 res_src = src.resolve()
-                if res_src in cache and cache[res_src] == 
get_cache_info(res_src):
+                if res_src in cache and cache[res_src] == get_cache_info(
+                    res_src
+                ):
                     changed = Changed.CACHED
             if changed is not Changed.CACHED and format_file_in_place(
                 src, fast=fast, write_back=write_back, mode=mode
             ):
                 changed = Changed.YES
-            if (write_back is WriteBack.YES and changed is not Changed.CACHED) 
or (
-                write_back is WriteBack.CHECK and changed is Changed.NO
-            ):
+            if (
+                write_back is WriteBack.YES and changed is not Changed.CACHED
+            ) or (write_back is WriteBack.CHECK and changed is Changed.NO):
                 write_cache(cache, [src], mode)
         report.done(src, changed)
     except Exception as exc:
@@ -580,7 +612,13 @@ async def schedule_formatting(
     tasks = {
         asyncio.ensure_future(
             loop.run_in_executor(
-                executor, format_file_in_place, src, fast, mode, write_back, 
lock
+                executor,
+                format_file_in_place,
+                src,
+                fast,
+                mode,
+                write_back,
+                lock,
             )
         ): src
         for src in sorted(sources)
@@ -593,7 +631,9 @@ async def schedule_formatting(
         # There are no good alternatives for these on Windows.
         pass
     while pending:
-        done, _ = await asyncio.wait(pending, 
return_when=asyncio.FIRST_COMPLETED)
+        done, _ = await asyncio.wait(
+            pending, return_when=asyncio.FIRST_COMPLETED
+        )
         for task in done:
             src = tasks.pop(task)
             if task.cancelled():
@@ -682,7 +722,10 @@ def format_stdin_to_stdout(
 
     finally:
         f = io.TextIOWrapper(
-            sys.stdout.buffer, encoding=encoding, newline=newline, 
write_through=True
+            sys.stdout.buffer,
+            encoding=encoding,
+            newline=newline,
+            write_through=True,
         )
         if write_back == WriteBack.YES:
             f.write(dst)
@@ -741,7 +784,10 @@ def format_str(src_contents: str, *, mod
     after = 0
     split_line_features = {
         feature
-        for feature in {Feature.TRAILING_COMMA_IN_CALL, 
Feature.TRAILING_COMMA_IN_DEF}
+        for feature in {
+            Feature.TRAILING_COMMA_IN_CALL,
+            Feature.TRAILING_COMMA_IN_DEF,
+        }
         if supports_feature(versions, feature)
     }
     for current_line in lines.visit(src_node):
@@ -751,7 +797,9 @@ def format_str(src_contents: str, *, mod
         for _ in range(before):
             dst_contents.append(str(empty_line))
         for line in split_line(
-            current_line, line_length=mode.line_length, 
features=split_line_features
+            current_line,
+            line_length=mode.line_length,
+            features=split_line_features,
         ):
             dst_contents.append(str(line))
     return "".join(dst_contents)
@@ -806,13 +854,17 @@ def get_grammars(target_versions: Set[Ta
             )
         if not supports_feature(target_versions, Feature.ASYNC_KEYWORDS):
             # Python 3.0-3.6
-            
grammars.append(pygram.python_grammar_no_print_statement_no_exec_statement)
+            grammars.append(
+                pygram.python_grammar_no_print_statement_no_exec_statement
+            )
         # At least one of the above branches must have been taken, because 
every Python
         # version has exactly one of the two 'ASYNC_*' flags
         return grammars
 
 
-def lib2to3_parse(src_txt: str, target_versions: Iterable[TargetVersion] = ()) 
-> Node:
+def lib2to3_parse(
+    src_txt: str, target_versions: Iterable[TargetVersion] = ()
+) -> Node:
     """Given a string with source, return the lib2to3 Node."""
     if src_txt[-1:] != "\n":
         src_txt += "\n"
@@ -830,7 +882,9 @@ def lib2to3_parse(src_txt: str, target_v
                 faulty_line = lines[lineno - 1]
             except IndexError:
                 faulty_line = "<line number missing in source>"
-            exc = InvalidInput(f"Cannot parse: {lineno}:{column}: 
{faulty_line}")
+            exc = InvalidInput(
+                f"Cannot parse: {lineno}:{column}: {faulty_line}"
+            )
     else:
         raise exc from None
 
@@ -1077,7 +1131,9 @@ class BracketTracker:
         """Return True if there is an yet unmatched open bracket on the 
line."""
         return bool(self.bracket_match)
 
-    def max_delimiter_priority(self, exclude: Iterable[LeafID] = ()) -> 
Priority:
+    def max_delimiter_priority(
+        self, exclude: Iterable[LeafID] = ()
+    ) -> Priority:
         """Return the highest priority of a delimiter found on the line.
 
         Values are consistent with what `is_split_*_delimiter()` return.
@@ -1160,7 +1216,9 @@ class Line:
 
     depth: int = 0
     leaves: List[Leaf] = Factory(list)
-    comments: Dict[LeafID, List[Leaf]] = Factory(dict)  # keys ordered like 
`leaves`
+    comments: Dict[LeafID, List[Leaf]] = Factory(
+        dict
+    )  # keys ordered like `leaves`
     bracket_tracker: BracketTracker = Factory(BracketTracker)
     inside_brackets: bool = False
     should_explode: bool = False
@@ -1213,7 +1271,9 @@ class Line:
     @property
     def is_comment(self) -> bool:
         """Is this line a standalone comment?"""
-        return len(self.leaves) == 1 and self.leaves[0].type == 
STANDALONE_COMMENT
+        return (
+            len(self.leaves) == 1 and self.leaves[0].type == STANDALONE_COMMENT
+        )
 
     @property
     def is_decorator(self) -> bool:
@@ -1278,7 +1338,10 @@ class Line:
             commas = 0
             comma_depth = self.leaves[close_index - 1].bracket_depth
             for leaf in self.leaves[_open_index + 1 : close_index]:
-                if leaf.bracket_depth == comma_depth and leaf.type == 
token.COMMA:
+                if (
+                    leaf.bracket_depth == comma_depth
+                    and leaf.type == token.COMMA
+                ):
                     commas += 1
             if commas > 1:
                 # We haven't looked yet for the trailing comma because
@@ -1308,7 +1371,9 @@ class Line:
             second_leaf: Optional[Leaf] = self.leaves[1]
         except IndexError:
             second_leaf = None
-        return (first_leaf.type == token.NAME and first_leaf.value == "def") 
or (
+        return (
+            first_leaf.type == token.NAME and first_leaf.value == "def"
+        ) or (
             first_leaf.type == token.ASYNC
             and second_leaf is not None
             and second_leaf.type == token.NAME
@@ -1340,7 +1405,9 @@ class Line:
             and self.leaves[0].value.startswith(('"""', "'''"))
         )
 
-    def contains_standalone_comments(self, depth_limit: int = sys.maxsize) -> 
bool:
+    def contains_standalone_comments(
+        self, depth_limit: int = sys.maxsize
+    ) -> bool:
         """If so, needs to be split before emitting."""
         for leaf in self.leaves:
             if leaf.type == STANDALONE_COMMENT:
@@ -1584,8 +1651,14 @@ class EmptyLineTracker:
                 before = 0 if depth else 1
             else:
                 before = 1 if depth else 2
-        if current_line.is_decorator or current_line.is_def or 
current_line.is_class:
-            return self._maybe_empty_lines_for_class_or_def(current_line, 
before)
+        if (
+            current_line.is_decorator
+            or current_line.is_def
+            or current_line.is_class
+        ):
+            return self._maybe_empty_lines_for_class_or_def(
+                current_line, before
+            )
 
         if (
             self.previous_line
@@ -1632,7 +1705,10 @@ class EmptyLineTracker:
             if self.previous_line.depth > current_line.depth:
                 newlines = 1
             elif current_line.is_class or self.previous_line.is_class:
-                if current_line.is_stub_class and 
self.previous_line.is_stub_class:
+                if (
+                    current_line.is_stub_class
+                    and self.previous_line.is_stub_class
+                ):
                     # No blank line between classes with an empty body
                     newlines = 0
                 else:
@@ -1681,7 +1757,9 @@ class LineGenerator(Visitor[Line]):
     def visit_default(self, node: LN) -> Iterator[Line]:
         """Default `visit_*()` implementation. Recurses to children of 
`node`."""
         if isinstance(node, Leaf):
-            any_open_brackets = 
self.current_line.bracket_tracker.any_open_brackets()
+            any_open_brackets = (
+                self.current_line.bracket_tracker.any_open_brackets()
+            )
             for comment in generate_comments(node):
                 if any_open_brackets:
                     # any comment within brackets is subject to splitting
@@ -1700,7 +1778,9 @@ class LineGenerator(Visitor[Line]):
 
             normalize_prefix(node, inside_brackets=any_open_brackets)
             if self.normalize_strings and node.type == token.STRING:
-                normalize_string_prefix(node, 
remove_u_prefix=self.remove_u_prefix)
+                normalize_string_prefix(
+                    node, remove_u_prefix=self.remove_u_prefix
+                )
                 normalize_string_quotes(node)
             if node.type == token.NUMBER:
                 normalize_numeric_literal(node)
@@ -1801,7 +1881,11 @@ class LineGenerator(Visitor[Line]):
                 yield from self.line(-1)
 
         else:
-            if not self.is_pyi or not node.parent or not 
is_stub_suite(node.parent):
+            if (
+                not self.is_pyi
+                or not node.parent
+                or not is_stub_suite(node.parent)
+            ):
                 yield from self.line()
             yield from self.visit_default(node)
 
@@ -1844,12 +1928,18 @@ class LineGenerator(Visitor[Line]):
         """You are in a twisty little maze of passages."""
         v = self.visit_stmt
         Ø: Set[str] = set()
-        self.visit_assert_stmt = partial(v, keywords={"assert"}, 
parens={"assert", ","})
+        self.visit_assert_stmt = partial(
+            v, keywords={"assert"}, parens={"assert", ","}
+        )
         self.visit_if_stmt = partial(
             v, keywords={"if", "else", "elif"}, parens={"if", "elif"}
         )
-        self.visit_while_stmt = partial(v, keywords={"while", "else"}, 
parens={"while"})
-        self.visit_for_stmt = partial(v, keywords={"for", "else"}, 
parens={"for", "in"})
+        self.visit_while_stmt = partial(
+            v, keywords={"while", "else"}, parens={"while"}
+        )
+        self.visit_for_stmt = partial(
+            v, keywords={"for", "else"}, parens={"for", "in"}
+        )
         self.visit_try_stmt = partial(
             v, keywords={"try", "except", "else", "finally"}, parens=Ø
         )
@@ -1858,7 +1948,9 @@ class LineGenerator(Visitor[Line]):
         self.visit_funcdef = partial(v, keywords={"def"}, parens=Ø)
         self.visit_classdef = partial(v, keywords={"class"}, parens=Ø)
         self.visit_expr_stmt = partial(v, keywords=Ø, parens=ASSIGNMENTS)
-        self.visit_return_stmt = partial(v, keywords={"return"}, 
parens={"return"})
+        self.visit_return_stmt = partial(
+            v, keywords={"return"}, parens={"return"}
+        )
         self.visit_import_from = partial(v, keywords=Ø, parens={"import"})
         self.visit_del_stmt = partial(v, keywords=Ø, parens={"del"})
         self.visit_async_funcdef = self.visit_async_stmt
@@ -1866,7 +1958,11 @@ class LineGenerator(Visitor[Line]):
 
 
 IMPLICIT_TUPLE = {syms.testlist, syms.testlist_star_expr, syms.exprlist}
-BRACKET = {token.LPAR: token.RPAR, token.LSQB: token.RSQB, token.LBRACE: 
token.RBRACE}
+BRACKET = {
+    token.LPAR: token.RPAR,
+    token.LSQB: token.RSQB,
+    token.LBRACE: token.RBRACE,
+}
 OPENING_BRACKETS = set(BRACKET.keys())
 CLOSING_BRACKETS = set(BRACKET.values())
 BRACKETS = OPENING_BRACKETS | CLOSING_BRACKETS
@@ -1891,7 +1987,9 @@ def whitespace(leaf: Leaf, *, complex_su
     if t == token.COMMENT:
         return DOUBLESPACE
 
-    assert p is not None, f"INTERNAL ERROR: hand-made leaf without parent: 
{leaf!r}"
+    assert (
+        p is not None
+    ), f"INTERNAL ERROR: hand-made leaf without parent: {leaf!r}"
     if t == token.COLON and p.type not in {
         syms.subscript,
         syms.subscriptlist,
@@ -1935,7 +2033,10 @@ def whitespace(leaf: Leaf, *, complex_su
                 return NO
 
         elif prevp.type == token.COLON:
-            if prevp.parent and prevp.parent.type in {syms.subscript, 
syms.sliceop}:
+            if prevp.parent and prevp.parent.type in {
+                syms.subscript,
+                syms.sliceop,
+            }:
                 return SPACE if complex_subscript else NO
 
         elif (
@@ -2079,7 +2180,9 @@ def whitespace(leaf: Leaf, *, complex_su
             }:
                 return NO
 
-            elif prevp.type == token.EQUAL and prevp_parent.type == 
syms.argument:
+            elif (
+                prevp.type == token.EQUAL and prevp_parent.type == 
syms.argument
+            ):
                 return NO
 
         elif t in {token.NAME, token.NUMBER, token.STRING}:
@@ -2147,14 +2250,19 @@ def container_of(leaf: Leaf) -> LN:
         if parent.type == syms.file_input:
             break
 
-        if parent.prev_sibling is not None and parent.prev_sibling.type in 
BRACKETS:
+        if (
+            parent.prev_sibling is not None
+            and parent.prev_sibling.type in BRACKETS
+        ):
             break
 
         container = parent
     return container
 
 
-def is_split_after_delimiter(leaf: Leaf, previous: Optional[Leaf] = None) -> 
Priority:
+def is_split_after_delimiter(
+    leaf: Leaf, previous: Optional[Leaf] = None
+) -> Priority:
     """Return the priority of the `leaf` delimiter, given a line break after 
it.
 
     The delimiter priorities returned here are from those delimiters that would
@@ -2168,7 +2276,9 @@ def is_split_after_delimiter(leaf: Leaf,
     return 0
 
 
-def is_split_before_delimiter(leaf: Leaf, previous: Optional[Leaf] = None) -> 
Priority:
+def is_split_before_delimiter(
+    leaf: Leaf, previous: Optional[Leaf] = None
+) -> Priority:
     """Return the priority of the `leaf` delimiter, given a line break before 
it.
 
     The delimiter priorities returned here are from those delimiters that would
@@ -2228,7 +2338,11 @@ def is_split_before_delimiter(leaf: Leaf
     ):
         return COMPREHENSION_PRIORITY
 
-    if leaf.value in {"if", "else"} and leaf.parent and leaf.parent.type == 
syms.test:
+    if (
+        leaf.value in {"if", "else"}
+        and leaf.parent
+        and leaf.parent.type == syms.test
+    ):
         return TERNARY_PRIORITY
 
     if leaf.value == "is":
@@ -2287,7 +2401,9 @@ def generate_comments(leaf: LN) -> Itera
     Inline comments are emitted as regular token.COMMENT leaves.  Standalone
     are emitted with a fake STANDALONE_COMMENT token identifier.
     """
-    for pc in list_comments(leaf.prefix, is_endmarker=leaf.type == 
token.ENDMARKER):
+    for pc in list_comments(
+        leaf.prefix, is_endmarker=leaf.type == token.ENDMARKER
+    ):
         yield Leaf(pc.type, pc.value, prefix="\n" * pc.newlines)
 
 
@@ -2339,7 +2455,10 @@ def list_comments(prefix: str, *, is_end
         comment = make_comment(line)
         result.append(
             ProtoComment(
-                type=comment_type, value=comment, newlines=nlines, 
consumed=consumed
+                type=comment_type,
+                value=comment,
+                newlines=nlines,
+                consumed=consumed,
             )
         )
         nlines = 0
@@ -2391,7 +2510,9 @@ def split_line(
         and not line.should_explode
         and not line.is_collection_with_optional_trailing_comma
         and (
-            is_line_short_enough(line, line_length=line_length, 
line_str=line_str)
+            is_line_short_enough(
+                line, line_length=line_length, line_str=line_str
+            )
             or line.contains_unsplittable_type_ignore()
         )
     ):
@@ -2405,7 +2526,9 @@ def split_line(
 
         def rhs(line: Line, features: Collection[Feature]) -> Iterator[Line]:
             for omit in generate_trailers_to_omit(line, line_length):
-                lines = list(right_hand_split(line, line_length, features, 
omit=omit))
+                lines = list(
+                    right_hand_split(line, line_length, features, omit=omit)
+                )
                 if is_line_short_enough(lines[0], line_length=line_length):
                     yield from lines
                     return
@@ -2427,11 +2550,16 @@ def split_line(
         try:
             for l in split_func(line, features):
                 if str(l).strip("\n") == line_str:
-                    raise CannotSplit("Split function returned an unchanged 
result")
+                    raise CannotSplit(
+                        "Split function returned an unchanged result"
+                    )
 
                 result.extend(
                     split_line(
-                        l, line_length=line_length, inner=True, 
features=features
+                        l,
+                        line_length=line_length,
+                        inner=True,
+                        features=features,
                     )
                 )
         except CannotSplit:
@@ -2445,7 +2573,9 @@ def split_line(
         yield line
 
 
-def left_hand_split(line: Line, features: Collection[Feature] = ()) -> 
Iterator[Line]:
+def left_hand_split(
+    line: Line, features: Collection[Feature] = ()
+) -> Iterator[Line]:
     """Split line into many lines, starting with the first matching bracket 
pair.
 
     Note: this usually looks weird, only use this for function definitions.
@@ -2473,7 +2603,9 @@ def left_hand_split(line: Line, features
         raise CannotSplit("No brackets found")
 
     head = bracket_split_build_line(head_leaves, line, matching_bracket)
-    body = bracket_split_build_line(body_leaves, line, matching_bracket, 
is_body=True)
+    body = bracket_split_build_line(
+        body_leaves, line, matching_bracket, is_body=True
+    )
     tail = bracket_split_build_line(tail_leaves, line, matching_bracket)
     bracket_split_succeeded_or_raise(head, body, tail)
     for result in (head, body, tail):
@@ -2521,7 +2653,9 @@ def right_hand_split(
     body_leaves.reverse()
     head_leaves.reverse()
     head = bracket_split_build_line(head_leaves, line, opening_bracket)
-    body = bracket_split_build_line(body_leaves, line, opening_bracket, 
is_body=True)
+    body = bracket_split_build_line(
+        body_leaves, line, opening_bracket, is_body=True
+    )
     tail = bracket_split_build_line(tail_leaves, line, opening_bracket)
     bracket_split_succeeded_or_raise(head, body, tail)
     if (
@@ -2543,7 +2677,9 @@ def right_hand_split(
     ):
         omit = {id(closing_bracket), *omit}
         try:
-            yield from right_hand_split(line, line_length, features=features, 
omit=omit)
+            yield from right_hand_split(
+                line, line_length, features=features, omit=omit
+            )
             return
 
         except CannotSplit:
@@ -2555,7 +2691,10 @@ def right_hand_split(
                     "Splitting failed, body is still too long and can't be 
split."
                 )
 
-            elif head.contains_multiline_strings() or 
tail.contains_multiline_strings():
+            elif (
+                head.contains_multiline_strings()
+                or tail.contains_multiline_strings()
+            ):
                 raise CannotSplit(
                     "The current optional pair of parentheses is bound to fail 
to "
                     "satisfy the splitting algorithm because the head or the 
tail "
@@ -2570,7 +2709,9 @@ def right_hand_split(
             yield result
 
 
-def bracket_split_succeeded_or_raise(head: Line, body: Line, tail: Line) -> 
None:
+def bracket_split_succeeded_or_raise(
+    head: Line, body: Line, tail: Line
+) -> None:
     """Raise :exc:`CannotSplit` if the last left- or right-hand split failed.
 
     Do nothing otherwise.
@@ -2597,7 +2738,11 @@ def bracket_split_succeeded_or_raise(hea
 
 
 def bracket_split_build_line(
-    leaves: List[Leaf], original: Line, opening_bracket: Leaf, *, is_body: 
bool = False
+    leaves: List[Leaf],
+    original: Line,
+    opening_bracket: Leaf,
+    *,
+    is_body: bool = False,
 ) -> Line:
     """Return a new line with given `leaves` and respective comments from 
`original`.
 
@@ -2643,7 +2788,9 @@ def dont_increase_indentation(split_func
     """
 
     @wraps(split_func)
-    def split_wrapper(line: Line, features: Collection[Feature] = ()) -> 
Iterator[Line]:
+    def split_wrapper(
+        line: Line, features: Collection[Feature] = ()
+    ) -> Iterator[Line]:
         for l in split_func(line, features):
             normalize_prefix(l.leaves[0], inside_brackets=True)
             yield l
@@ -2652,7 +2799,9 @@ def dont_increase_indentation(split_func
 
 
 @dont_increase_indentation
-def delimiter_split(line: Line, features: Collection[Feature] = ()) -> 
Iterator[Line]:
+def delimiter_split(
+    line: Line, features: Collection[Feature] = ()
+) -> Iterator[Line]:
     """Split according to delimiters of the highest priority.
 
     If the appropriate Features are given, the split will add trailing commas
@@ -2671,7 +2820,9 @@ def delimiter_split(line: Line, features
 
     if delimiter_priority == DOT_PRIORITY:
         if bt.delimiter_count_with_priority(delimiter_priority) == 1:
-            raise CannotSplit("Splitting a single attribute from its owner 
looks wrong")
+            raise CannotSplit(
+                "Splitting a single attribute from its owner looks wrong"
+            )
 
     current_line = Line(depth=line.depth, inside_brackets=line.inside_brackets)
     lowest_depth = sys.maxsize
@@ -2685,7 +2836,9 @@ def delimiter_split(line: Line, features
         except ValueError:
             yield current_line
 
-            current_line = Line(depth=line.depth, 
inside_brackets=line.inside_brackets)
+            current_line = Line(
+                depth=line.depth, inside_brackets=line.inside_brackets
+            )
             current_line.append(leaf)
 
     for leaf in line.leaves:
@@ -2698,18 +2851,22 @@ def delimiter_split(line: Line, features
         if leaf.bracket_depth == lowest_depth:
             if is_vararg(leaf, within={syms.typedargslist}):
                 trailing_comma_safe = (
-                    trailing_comma_safe and Feature.TRAILING_COMMA_IN_DEF in 
features
+                    trailing_comma_safe
+                    and Feature.TRAILING_COMMA_IN_DEF in features
                 )
             elif is_vararg(leaf, within={syms.arglist, syms.argument}):
                 trailing_comma_safe = (
-                    trailing_comma_safe and Feature.TRAILING_COMMA_IN_CALL in 
features
+                    trailing_comma_safe
+                    and Feature.TRAILING_COMMA_IN_CALL in features
                 )
 
         leaf_priority = bt.delimiters.get(id(leaf))
         if leaf_priority == delimiter_priority:
             yield current_line
 
-            current_line = Line(depth=line.depth, 
inside_brackets=line.inside_brackets)
+            current_line = Line(
+                depth=line.depth, inside_brackets=line.inside_brackets
+            )
     if current_line:
         if (
             trailing_comma_safe
@@ -2739,7 +2896,9 @@ def standalone_comment_split(
         except ValueError:
             yield current_line
 
-            current_line = Line(depth=line.depth, 
inside_brackets=line.inside_brackets)
+            current_line = Line(
+                depth=line.depth, inside_brackets=line.inside_brackets
+            )
             current_line.append(leaf)
 
     for leaf in line.leaves:
@@ -2970,7 +3129,9 @@ def normalize_invisible_parens(node: Nod
                     lpar = Leaf(token.LPAR, "")
                     rpar = Leaf(token.RPAR, "")
                     index = child.remove() or 0
-                    node.insert_child(index, Node(syms.atom, [lpar, child, 
rpar]))
+                    node.insert_child(
+                        index, Node(syms.atom, [lpar, child, rpar])
+                    )
             elif is_one_tuple(child):
                 # wrap child in visible parentheses
                 lpar = Leaf(token.LPAR, "(")
@@ -3032,12 +3193,16 @@ def convert_one_fmt_off_pair(node: Node)
                 if not ignored_nodes:
                     continue
 
-                first = ignored_nodes[0]  # Can be a container node with the 
`leaf`.
+                first = ignored_nodes[
+                    0
+                ]  # Can be a container node with the `leaf`.
                 parent = first.parent
                 prefix = first.prefix
                 first.prefix = prefix[comment.consumed :]
                 hidden_value = (
-                    comment.value + "\n" + "".join(str(n) for n in 
ignored_nodes)
+                    comment.value
+                    + "\n"
+                    + "".join(str(n) for n in ignored_nodes)
                 )
                 if hidden_value.endswith("\n"):
                     # That happens when one of the `ignored_nodes` ended with 
a NEWLINE
@@ -3048,14 +3213,19 @@ def convert_one_fmt_off_pair(node: Node)
                     index = ignored.remove()
                     if first_idx is None:
                         first_idx = index
-                assert parent is not None, "INTERNAL ERROR: fmt: on/off 
handling (1)"
-                assert first_idx is not None, "INTERNAL ERROR: fmt: on/off 
handling (2)"
+                assert (
+                    parent is not None
+                ), "INTERNAL ERROR: fmt: on/off handling (1)"
+                assert (
+                    first_idx is not None
+                ), "INTERNAL ERROR: fmt: on/off handling (2)"
                 parent.insert_child(
                     first_idx,
                     Leaf(
                         STANDALONE_COMMENT,
                         hidden_value,
-                        prefix=prefix[:previous_consumed] + "\n" * 
comment.newlines,
+                        prefix=prefix[:previous_consumed]
+                        + "\n" * comment.newlines,
                     ),
                 )
                 return True
@@ -3312,7 +3482,9 @@ def should_explode(line: Line, opening_b
     try:
         last_leaf = line.leaves[-1]
         exclude = {id(last_leaf)} if last_leaf.type == token.COMMA else set()
-        max_priority = 
line.bracket_tracker.max_delimiter_priority(exclude=exclude)
+        max_priority = line.bracket_tracker.max_delimiter_priority(
+            exclude=exclude
+        )
     except (IndexError, ValueError):
         return False
 
@@ -3372,11 +3544,15 @@ def detect_target_versions(node: Node) -
     """Detect the version to target based on the nodes used."""
     features = get_features_used(node)
     return {
-        version for version in TargetVersion if features <= 
VERSION_TO_FEATURES[version]
+        version
+        for version in TargetVersion
+        if features <= VERSION_TO_FEATURES[version]
     }
 
 
-def generate_trailers_to_omit(line: Line, line_length: int) -> 
Iterator[Set[LeafID]]:
+def generate_trailers_to_omit(
+    line: Line, line_length: int
+) -> Iterator[Set[LeafID]]:
     """Generate sets of closing bracket IDs that should be omitted in a RHS.
 
     Brackets can be omitted if the entire trailer up to and including
@@ -3430,15 +3606,21 @@ def get_future_imports(node: Node) -> Se
     """Return a set of __future__ imports in the file."""
     imports: Set[str] = set()
 
-    def get_imports_from_children(children: List[LN]) -> Generator[str, None, 
None]:
+    def get_imports_from_children(
+        children: List[LN],
+    ) -> Generator[str, None, None]:
         for child in children:
             if isinstance(child, Leaf):
                 if child.type == token.NAME:
                     yield child.value
             elif child.type == syms.import_as_name:
                 orig_name = child.children[0]
-                assert isinstance(orig_name, Leaf), "Invalid syntax parsing 
imports"
-                assert orig_name.type == token.NAME, "Invalid syntax parsing 
imports"
+                assert isinstance(
+                    orig_name, Leaf
+                ), "Invalid syntax parsing imports"
+                assert (
+                    orig_name.type == token.NAME
+                ), "Invalid syntax parsing imports"
                 yield orig_name.value
             elif child.type == syms.import_as_names:
                 yield from get_imports_from_children(child.children)
@@ -3461,7 +3643,10 @@ def get_future_imports(node: Node) -> Se
                 break
         elif first_child.type == syms.import_from:
             module_name = first_child.children[1]
-            if not isinstance(module_name, Leaf) or module_name.value != 
"__future__":
+            if (
+                not isinstance(module_name, Leaf)
+                or module_name.value != "__future__"
+            ):
                 break
             imports |= set(get_imports_from_children(first_child.children[3:]))
         else:
@@ -3483,7 +3668,9 @@ def gen_python_files_in_dir(
 
     `report` is where output about exclusions goes.
     """
-    assert root.is_absolute(), f"INTERNAL ERROR: `root` must be absolute but 
is {root}"
+    assert (
+        root.is_absolute()
+    ), f"INTERNAL ERROR: `root` must be absolute but is {root}"
     for child in path.iterdir():
         try:
             normalized_path = "/" + 
child.resolve().relative_to(root).as_posix()
@@ -3500,11 +3687,15 @@ def gen_python_files_in_dir(
             normalized_path += "/"
         exclude_match = exclude.search(normalized_path)
         if exclude_match and exclude_match.group(0):
-            report.path_ignored(child, f"matches the --exclude regular 
expression")
+            report.path_ignored(
+                child, f"matches the --exclude regular expression"
+            )
             continue
 
         if child.is_dir():
-            yield from gen_python_files_in_dir(child, root, include, exclude, 
report)
+            yield from gen_python_files_in_dir(
+                child, root, include, exclude, report
+            )
 
         elif child.is_file():
             include_match = include.search(normalized_path)
@@ -3614,7 +3805,9 @@ class Report:
         if self.change_count:
             s = "s" if self.change_count > 1 else ""
             report.append(
-                click.style(f"{self.change_count} file{s} {reformatted}", 
bold=True)
+                click.style(
+                    f"{self.change_count} file{s} {reformatted}", bold=True
+                )
             )
         if self.same_count:
             s = "s" if self.same_count > 1 else ""
@@ -3633,13 +3826,17 @@ def parse_ast(src: str) -> Union[ast.AST
         # TODO: support Python 4+ ;)
         for minor_version in range(sys.version_info[1], 4, -1):
             try:
-                return ast.parse(src, filename, feature_version=(3, 
minor_version))
+                return ast.parse(
+                    src, filename, feature_version=(3, minor_version)
+                )
             except SyntaxError:
                 continue
     else:
         for feature_version in (7, 6):
             try:
-                return ast3.parse(src, filename, 
feature_version=feature_version)
+                return ast3.parse(
+                    src, filename, feature_version=feature_version
+                )
             except SyntaxError:
                 continue
 
@@ -3664,7 +3861,9 @@ def _fixup_ast_constants(
 def assert_equivalent(src: str, dst: str) -> None:
     """Raise AssertionError if `src` and `dst` aren't equivalent."""
 
-    def _v(node: Union[ast.AST, ast3.AST, ast27.AST], depth: int = 0) -> 
Iterator[str]:
+    def _v(
+        node: Union[ast.AST, ast3.AST, ast27.AST], depth: int = 0
+    ) -> Iterator[str]:
         """Simple visitor generating strings to compare ASTs by content."""
 
         node = _fixup_ast_constants(node)
@@ -3692,8 +3891,12 @@ def assert_equivalent(src: str, dst: str
                     # parentheses and they change the AST.
                     if (
                         field == "targets"
-                        and isinstance(node, (ast.Delete, ast3.Delete, 
ast27.Delete))
-                        and isinstance(item, (ast.Tuple, ast3.Tuple, 
ast27.Tuple))
+                        and isinstance(
+                            node, (ast.Delete, ast3.Delete, ast27.Delete)
+                        )
+                        and isinstance(
+                            item, (ast.Tuple, ast3.Tuple, ast27.Tuple)
+                        )
                     ):
                         for item in item.elts:
                             yield from _v(item, depth + 2)
@@ -3780,7 +3983,9 @@ def diff(a: str, b: str, a_name: str, b_
     a_lines = [line + "\n" for line in a.split("\n")]
     b_lines = [line + "\n" for line in b.split("\n")]
     return "".join(
-        difflib.unified_diff(a_lines, b_lines, fromfile=a_name, tofile=b_name, 
n=5)
+        difflib.unified_diff(
+            a_lines, b_lines, fromfile=a_name, tofile=b_name, n=5
+        )
     )
 
 
@@ -3866,7 +4071,9 @@ def enumerate_with_length(
         yield index, leaf, length
 
 
-def is_line_short_enough(line: Line, *, line_length: int, line_str: str = "") 
-> bool:
+def is_line_short_enough(
+    line: Line, *, line_length: int, line_str: str = ""
+) -> bool:
     """Return True if `line` is no longer than `line_length`.
 
     Uses the provided `line_str` rendering, if any, otherwise computes a new 
one.
@@ -3904,7 +4111,9 @@ def can_be_split(line: Line) -> bool:
             elif leaf.type == token.DOT:
                 dot_count += 1
             elif leaf.type == token.NAME:
-                if not (next.type == token.DOT or next.type in 
OPENING_BRACKETS):
+                if not (
+                    next.type == token.DOT or next.type in OPENING_BRACKETS
+                ):
                     return False
 
             elif leaf.type not in CLOSING_BRACKETS:
@@ -4033,7 +4242,9 @@ def get_cache_info(path: Path) -> CacheI
     return stat.st_mtime, stat.st_size
 
 
-def filter_cached(cache: Cache, sources: Iterable[Path]) -> Tuple[Set[Path], 
Set[Path]]:
+def filter_cached(
+    cache: Cache, sources: Iterable[Path]
+) -> Tuple[Set[Path], Set[Path]]:
     """Split an iterable of paths in `sources` into two sets.
 
     The first contains paths of files that modified on disk or are not in the
@@ -4054,8 +4265,13 @@ def write_cache(cache: Cache, sources: I
     cache_file = get_cache_file(mode)
     try:
         CACHE_DIR.mkdir(parents=True, exist_ok=True)
-        new_cache = {**cache, **{src.resolve(): get_cache_info(src) for src in 
sources}}
-        with tempfile.NamedTemporaryFile(dir=str(cache_file.parent), 
delete=False) as f:
+        new_cache = {
+            **cache,
+            **{src.resolve(): get_cache_info(src) for src in sources},
+        }
+        with tempfile.NamedTemporaryFile(
+            dir=str(cache_file.parent), delete=False
+        ) as f:
             pickle.dump(new_cache, f, protocol=pickle.HIGHEST_PROTOCOL)
         os.replace(f.name, cache_file)
     except OSError:
diff --git a/doc/check-seclevel.py b/doc/check-seclevel.py
--- a/doc/check-seclevel.py
+++ b/doc/check-seclevel.py
@@ -70,7 +70,9 @@ def checkseclevel(ui, doc, name, initlev
             continue
         nextlevel = mark2level[mark]
         if curlevel < nextlevel and curlevel + 1 != nextlevel:
-            ui.warnnoi18n('gap of section level at "%s" of %s\n' % (title, 
name))
+            ui.warnnoi18n(
+                'gap of section level at "%s" of %s\n' % (title, name)
+            )
             showavailables(ui, initlevel)
             errorcnt += 1
             continue
@@ -88,7 +90,9 @@ def checkcmdtable(ui, cmdtable, namefmt,
     for k, entry in cmdtable.items():
         name = k.split(b"|")[0].lstrip(b"^")
         if not entry[0].__doc__:
-            ui.notenoi18n('skip checking %s: no help document\n' % (namefmt % 
name))
+            ui.notenoi18n(
+                'skip checking %s: no help document\n' % (namefmt % name)
+            )
             continue
         errorcnt += checkseclevel(
             ui, entry[0].__doc__, namefmt % name, initlevel
@@ -113,7 +117,9 @@ def checkhghelps(ui):
     ):
         mod = extensions.load(ui, name, None)
         if not mod.__doc__:
-            ui.notenoi18n('skip checking %s extension: no help document\n' % 
name)
+            ui.notenoi18n(
+                'skip checking %s extension: no help document\n' % name
+            )
             continue
         errorcnt += checkseclevel(
             ui, mod.__doc__, '%s extension' % name, initlevel_ext
diff --git a/hgext/phabricator.py b/hgext/phabricator.py
--- a/hgext/phabricator.py
+++ b/hgext/phabricator.py
@@ -774,7 +774,9 @@ def phabsend(ui, repo, *revs, **opts):
                     try:
                         writediffproperties(unfi[newnode], diffmap[old.node()])
                     except util.urlerr.urlerror:
-                        ui.warnnoi18n(b'Failed to update metadata for D%s\n' % 
drevid)
+                        ui.warnnoi18n(
+                            b'Failed to update metadata for D%s\n' % drevid
+                        )
                 # Remove local tags since it's no longer necessary
                 tagname = b'D%d' % drevid
                 if tagname in repo.tags():
diff --git a/hgext/win32mbcs.py b/hgext/win32mbcs.py
--- a/hgext/win32mbcs.py
+++ b/hgext/win32mbcs.py
@@ -215,4 +215,6 @@ def extsetup(ui):
         # command line options is not yet applied when
         # extensions.loadall() is called.
         if b'--debug' in sys.argv:
-            ui.writenoi18n(b"[win32mbcs] activated with encoding: %s\n" % 
_encoding)
+            ui.writenoi18n(
+                b"[win32mbcs] activated with encoding: %s\n" % _encoding
+            )
diff --git a/mercurial/debugcommands.py b/mercurial/debugcommands.py
--- a/mercurial/debugcommands.py
+++ b/mercurial/debugcommands.py
@@ -1246,11 +1246,17 @@ def debugformat(ui, repo, **opts):
 def debugfsinfo(ui, path=b"."):
     """show information detected about current filesystem"""
     ui.writenoi18n(b'path: %s\n' % path)
-    ui.writenoi18n(b'mounted on: %s\n' % (util.getfsmountpoint(path) or 
b'(unknown)'))
+    ui.writenoi18n(
+        b'mounted on: %s\n' % (util.getfsmountpoint(path) or b'(unknown)')
+    )
     ui.writenoi18n(b'exec: %s\n' % (util.checkexec(path) and b'yes' or b'no'))
     ui.writenoi18n(b'fstype: %s\n' % (util.getfstype(path) or b'(unknown)'))
-    ui.writenoi18n(b'symlink: %s\n' % (util.checklink(path) and b'yes' or 
b'no'))
-    ui.writenoi18n(b'hardlink: %s\n' % (util.checknlink(path) and b'yes' or 
b'no'))
+    ui.writenoi18n(
+        b'symlink: %s\n' % (util.checklink(path) and b'yes' or b'no')
+    )
+    ui.writenoi18n(
+        b'hardlink: %s\n' % (util.checknlink(path) and b'yes' or b'no')
+    )
     casesensitive = b'(unknown)'
     try:
         with pycompat.namedtempfile(prefix=b'.debugfsinfo', dir=path) as f:
@@ -1934,7 +1940,9 @@ def debugmergestate(ui, repo, *args):
                 ui.writenoi18n(b'other: %s\n' % record)
             elif rtype == b'm':
                 driver, mdstate = record.split(b'\0', 1)
-                ui.writenoi18n(b'merge driver: %s (state "%s")\n' % (driver, 
mdstate))
+                ui.writenoi18n(
+                    b'merge driver: %s (state "%s")\n' % (driver, mdstate)
+                )
             elif rtype in b'FDC':
                 r = record.split(b'\0')
                 f, state, hash, lfile, afile, anode, ofile = r[0:7]
@@ -1947,7 +1955,9 @@ def debugmergestate(ui, repo, *args):
                     b'file: %s (record type "%s", state "%s", hash %s)\n'
                     % (f, rtype, state, _hashornull(hash))
                 )
-                ui.writenoi18n(b'  local path: %s (flags "%s")\n' % (lfile, 
flags))
+                ui.writenoi18n(
+                    b'  local path: %s (flags "%s")\n' % (lfile, flags)
+                )
                 ui.writenoi18n(
                     b'  ancestor path: %s (node %s)\n'
                     % (afile, _hashornull(anode))
@@ -2793,7 +2803,9 @@ def debugrevlog(ui, repo, file_=None, **
     fmt2 = dfmtstr(totalsize)
     ui.writenoi18n(b'revisions     : ' + fmt2 % numrevs)
     ui.writenoi18n(b'    merges    : ' + fmt % pcfmt(nummerges, numrevs))
-    ui.writenoi18n(b'    normal    : ' + fmt % pcfmt(numrevs - nummerges, 
numrevs))
+    ui.writenoi18n(
+        b'    normal    : ' + fmt % pcfmt(numrevs - nummerges, numrevs)
+    )
     ui.writenoi18n(b'revisions     : ' + fmt2 % numrevs)
     ui.writenoi18n(b'    empty     : ' + fmt % pcfmt(numempty, numrevs))
     ui.writenoi18n(
@@ -2804,7 +2816,9 @@ def debugrevlog(ui, repo, file_=None, **
         b'                   delta : '
         + fmt % pcfmt(numemptydelta, numemptytext + numemptydelta)
     )
-    ui.writenoi18n(b'    snapshot  : ' + fmt % pcfmt(numfull + numsemi, 
numrevs))
+    ui.writenoi18n(
+        b'    snapshot  : ' + fmt % pcfmt(numfull + numsemi, numrevs)
+    )
     for depth in sorted(numsnapdepth):
         ui.write(
             (b'      lvl-%-3d :       ' % depth)
@@ -2877,7 +2891,9 @@ def debugrevlog(ui, repo, file_=None, **
         ui.write(b'\n')
         fmt = pcfmtstr(numdeltas)
         fmt2 = pcfmtstr(numdeltas, 4)
-        ui.writenoi18n(b'deltas against prev  : ' + fmt % pcfmt(numprev, 
numdeltas))
+        ui.writenoi18n(
+            b'deltas against prev  : ' + fmt % pcfmt(numprev, numdeltas)
+        )
         if numprev > 0:
             ui.writenoi18n(
                 b'    where prev = p1  : ' + fmt2 % pcfmt(nump1prev, numprev)
@@ -2889,8 +2905,12 @@ def debugrevlog(ui, repo, file_=None, **
                 b'    other            : ' + fmt2 % pcfmt(numoprev, numprev)
             )
         if gdelta:
-            ui.writenoi18n(b'deltas against p1    : ' + fmt % pcfmt(nump1, 
numdeltas))
-            ui.writenoi18n(b'deltas against p2    : ' + fmt % pcfmt(nump2, 
numdeltas))
+            ui.writenoi18n(
+                b'deltas against p1    : ' + fmt % pcfmt(nump1, numdeltas)
+            )
+            ui.writenoi18n(
+                b'deltas against p2    : ' + fmt % pcfmt(nump2, numdeltas)
+            )
             ui.writenoi18n(
                 b'deltas against other : ' + fmt % pcfmt(numother, numdeltas)
             )
@@ -3109,8 +3129,12 @@ def debugrevspec(ui, repo, expr, **opts)
         arevs = revset.makematcher(treebystage[b'analyzed'])(repo)
         brevs = revset.makematcher(treebystage[b'optimized'])(repo)
         if opts[b'show_set'] or (opts[b'show_set'] is None and ui.verbose):
-            ui.writenoi18n(b"* analyzed set:\n", stringutil.prettyrepr(arevs), 
b"\n")
-            ui.writenoi18n(b"* optimized set:\n", 
stringutil.prettyrepr(brevs), b"\n")
+            ui.writenoi18n(
+                b"* analyzed set:\n", stringutil.prettyrepr(arevs), b"\n"
+            )
+            ui.writenoi18n(
+                b"* optimized set:\n", stringutil.prettyrepr(brevs), b"\n"
+            )
         arevs = list(arevs)
         brevs = list(brevs)
         if arevs == brevs:
@@ -3414,7 +3438,9 @@ def debugtemplate(ui, repo, tmpl, **opts
         ui.note(templater.prettyformat(tree), b'\n')
         newtree = templater.expandaliases(tree, aliases)
         if newtree != tree:
-            ui.notenoi18n(b"* expanded:\n", templater.prettyformat(newtree), 
b'\n')
+            ui.notenoi18n(
+                b"* expanded:\n", templater.prettyformat(newtree), b'\n'
+            )
 
     if revs is None:
         tres = formatter.templateresources(ui, repo)
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to