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
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."""
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:
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"