syms,
whitespace,
)
+from black.strings import str_width
from blib2to3.pgen2 import token
from blib2to3.pytree import Leaf, Node
before = 1
elif (
not depth
- and self.previous_defs[-1]
+ and self.previous_defs[-1].depth
and current_line.leaves[-1].type == token.COLON
and (
current_line.leaves[0].value
and self.previous_line.is_class
and current_line.is_triple_quoted_string
):
+ if Preview.no_blank_line_before_class_docstring in current_line.mode:
+ return 0, 1
return before, 1
if self.previous_line and self.previous_line.opens_block:
if not line_str:
line_str = line_to_string(line)
+ width = str_width if mode.preview else len
+
if Preview.multiline_string_handling not in mode:
return (
- len(line_str) <= mode.line_length
+ width(line_str) <= mode.line_length
and "\n" not in line_str # multiline strings
and not line.contains_standalone_comments()
)
return False
if "\n" not in line_str:
# No multiline strings (MLS) present
- return len(line_str) <= mode.line_length
+ return width(line_str) <= mode.line_length
first, *_, last = line_str.split("\n")
- if len(first) > mode.line_length or len(last) > mode.line_length:
+ if width(first) > mode.line_length or width(last) > mode.line_length:
return False
# Traverse the AST to examine the context of the multiline string (MLS),
# store the leaves that contain parts of the MLS
multiline_string_contexts: List[LN] = []
- max_level_to_update = math.inf # track the depth of the MLS
+ max_level_to_update: Union[int, float] = math.inf # track the depth of the MLS
for i, leaf in enumerate(line.leaves):
if max_level_to_update == math.inf:
had_comma: Optional[int] = None