Skip to content

Commit

Permalink
Byte strings aren't docstrings (#8350)
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
```

<!--
Thank you for contributing to Ruff! To help us out with reviewing,
please consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->
  • Loading branch information
konstin authored Oct 30, 2023
1 parent 98b3d71 commit f483ed4
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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 f483ed4

Please sign in to comment.