X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/87b8df28c48353d3d08d7e88d178c7a567de816a..86e1c3650741ce9641a14a89db6162f30786f093:/black.py diff --git a/black.py b/black.py index 228deb7..8d55164 100644 --- a/black.py +++ b/black.py @@ -44,11 +44,12 @@ from blib2to3.pgen2 import driver, token from blib2to3.pgen2.parse import ParseError -__version__ = "18.4a6" +__version__ = "18.5b0" DEFAULT_LINE_LENGTH = 88 +CACHE_DIR = Path(user_cache_dir("black", version=__version__)) + # types -syms = pygram.python_symbols FileContent = str Encoding = str Depth = int @@ -65,6 +66,9 @@ Cache = Dict[Path, CacheInfo] out = partial(click.secho, bold=True, err=True) err = partial(click.secho, fg="red", err=True) +pygram.initialize(CACHE_DIR) +syms = pygram.python_symbols + class NothingChanged(UserWarning): """Raised by :func:`format_file` when reformatted code is the same as source.""" @@ -2532,13 +2536,21 @@ def ensure_visible(leaf: Leaf) -> None: def should_explode(line: Line, opening_bracket: Leaf) -> bool: """Should `line` immediately be split with `delimiter_split()` after RHS?""" - return bool( + if not ( opening_bracket.parent and opening_bracket.parent.type in {syms.atom, syms.import_from} and opening_bracket.value in "[{(" - and line.bracket_tracker.delimiters - and line.bracket_tracker.max_delimiter_priority() == COMMA_PRIORITY - ) + ): + return False + + 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) + except (IndexError, ValueError): + return False + + return max_priority == COMMA_PRIORITY def is_python36(node: Node) -> bool: @@ -2594,6 +2606,9 @@ def generate_trailers_to_omit(line: Line, line_length: int) -> Iterator[Set[Leaf if length > line_length: break + if leaf.type == STANDALONE_COMMENT: + break + optional_brackets.discard(id(leaf)) if opening_bracket: if leaf is opening_bracket: @@ -3043,9 +3058,6 @@ def can_omit_invisible_parens(line: Line, line_length: int) -> bool: return False -CACHE_DIR = Path(user_cache_dir("black", version=__version__)) - - def get_cache_file(line_length: int) -> Path: return CACHE_DIR / f"cache.{line_length}.pickle"