Skip to content

Commit

Permalink
Byte strings aren't docstrings
Browse files Browse the repository at this point in the history
We previously incorrectly treated byte strings in docstring position as docstrings because black does so (#8283 (comment), psf/black#4002), even CPython doesn't recognize them:

```console
$ python3.12
Python 3.12.0 (main, Oct  6 2023, 17:57:44) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def f():
...     b""" a"""
...
>>> print(str(f.__doc__))
None
```
  • Loading branch information
konstin committed Oct 30, 2023
1 parent 98b3d71 commit 1cf5049
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
Expand Up @@ -93,6 +93,10 @@ def docstring_that_ends_with_quote_and_a_line_break3():
"""


class ByteDocstring:
b""" has leading whitespace"""
first_statement = 1

class TabbedIndent:
def tabbed_indent(self):
"""check for correct tabbed formatting
Expand Down
1 change: 0 additions & 1 deletion crates/ruff_python_formatter/src/statement/suite.rs
Expand Up @@ -554,7 +554,6 @@ impl<'a> DocstringStmt<'a> {

match value.as_ref() {
Expr::StringLiteral(value) if !value.implicit_concatenated => Some(DocstringStmt(stmt)),
Expr::BytesLiteral(value) if !value.implicit_concatenated => Some(DocstringStmt(stmt)),
_ => None,
}
}
Expand Down
Expand Up @@ -99,6 +99,10 @@ def docstring_that_ends_with_quote_and_a_line_break3():
"""
class ByteDocstring:
b""" has leading whitespace"""
first_statement = 1
class TabbedIndent:
def tabbed_indent(self):
"""check for correct tabbed formatting
Expand Down Expand Up @@ -213,6 +217,11 @@ def docstring_that_ends_with_quote_and_a_line_break3():
"""he said "the news of my death have been greatly exaggerated" """
class ByteDocstring:
b""" has leading whitespace"""
first_statement = 1
class TabbedIndent:
def tabbed_indent(self):
"""check for correct tabbed formatting
Expand Down Expand Up @@ -327,6 +336,11 @@ def docstring_that_ends_with_quote_and_a_line_break3():
"""he said "the news of my death have been greatly exaggerated" """
class ByteDocstring:
b""" has leading whitespace"""
first_statement = 1
class TabbedIndent:
def tabbed_indent(self):
"""check for correct tabbed formatting
Expand Down Expand Up @@ -441,6 +455,11 @@ def docstring_that_ends_with_quote_and_a_line_break3():
"""he said "the news of my death have been greatly exaggerated" """
class ByteDocstring:
b""" has leading whitespace"""
first_statement = 1
class TabbedIndent:
def tabbed_indent(self):
"""check for correct tabbed formatting
Expand Down Expand Up @@ -555,6 +574,11 @@ def docstring_that_ends_with_quote_and_a_line_break3():
"""he said "the news of my death have been greatly exaggerated" """
class ByteDocstring:
b""" has leading whitespace"""
first_statement = 1
class TabbedIndent:
def tabbed_indent(self):
"""check for correct tabbed formatting
Expand Down

0 comments on commit 1cf5049

Please sign in to comment.