Skip to content

Commit

Permalink
Fix bytes strings being treated as docstrings (#4003)
Browse files Browse the repository at this point in the history
Fixes #4002
  • Loading branch information
JelleZijlstra committed Nov 1, 2023
1 parent e501103 commit 5758da6
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 3 deletions.
4 changes: 2 additions & 2 deletions CHANGES.md
Expand Up @@ -8,8 +8,8 @@

### Stable style

- Fix a crash when whitespace(s) followed a backslash before newline in a docstring
(#4008)
- Fix crash on formatting bytes strings that look like docstrings (#4003)
- Fix crash when whitespace followed a backslash before newline in a docstring (#4008)

### Preview style

Expand Down
9 changes: 8 additions & 1 deletion src/black/nodes.py
Expand Up @@ -14,7 +14,7 @@

from black.cache import CACHE_DIR
from black.mode import Mode, Preview
from black.strings import has_triple_quotes
from black.strings import get_string_prefix, has_triple_quotes
from blib2to3 import pygram
from blib2to3.pgen2 import token
from blib2to3.pytree import NL, Leaf, Node, type_repr
Expand Down Expand Up @@ -525,6 +525,13 @@ def is_arith_like(node: LN) -> bool:


def is_docstring(leaf: Leaf) -> bool:
if leaf.type != token.STRING:
return False

prefix = get_string_prefix(leaf.value)
if "b" in prefix or "B" in prefix:
return False

if prev_siblings_are(
leaf.parent, [None, token.NEWLINE, token.INDENT, syms.simple_stmt]
):
Expand Down
34 changes: 34 additions & 0 deletions tests/data/cases/bytes_docstring.py
@@ -0,0 +1,34 @@
def bitey():
b" not a docstring"

def bitey2():
b' also not a docstring'

def triple_quoted_bytes():
b""" not a docstring"""

def triple_quoted_bytes2():
b''' also not a docstring'''

def capitalized_bytes():
B" NOT A DOCSTRING"

# output
def bitey():
b" not a docstring"


def bitey2():
b" also not a docstring"


def triple_quoted_bytes():
b""" not a docstring"""


def triple_quoted_bytes2():
b""" also not a docstring"""


def capitalized_bytes():
b" NOT A DOCSTRING"
File renamed without changes.

0 comments on commit 5758da6

Please sign in to comment.