mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-19 10:01:15 +00:00

## Summary This PR updates the formatter and linter to use the `PythonVersion` struct from the `ruff_python_ast` crate internally. While this doesn't remove the need for the `linter::PythonVersion` enum, it does remove the `formatter::PythonVersion` enum and limits the use in the linter to deserializing from CLI arguments and config files and moves most of the remaining methods to the `ast::PythonVersion` struct. ## Test Plan Existing tests, with some inputs and outputs updated to reflect the new (de)serialization format. I think these are test-specific and shouldn't affect any external (de)serialization. --------- Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
1044 lines
21 KiB
Text
1044 lines
21 KiB
Text
---
|
|
source: crates/ruff_python_formatter/tests/fixtures.rs
|
|
input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/docstring.py
|
|
---
|
|
## Input
|
|
```python
|
|
def single_line_backslashes1():
|
|
""" content\ """
|
|
return
|
|
|
|
|
|
def single_line_backslashes2():
|
|
""" content\\ """
|
|
return
|
|
|
|
|
|
def single_line_backslashes3():
|
|
""" content\\\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes1():
|
|
"""This is a docstring with
|
|
some lines of text\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes2():
|
|
"""This is a docstring with
|
|
some lines of text\\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes3():
|
|
"""This is a docstring with
|
|
some lines of text\\\ """
|
|
return
|
|
|
|
|
|
def multiple_negatively_indented_docstring_lines():
|
|
"""a
|
|
b
|
|
c
|
|
d
|
|
e
|
|
"""
|
|
|
|
|
|
def overindentend_docstring():
|
|
"""a
|
|
over-indented
|
|
"""
|
|
|
|
|
|
def comment_before_docstring():
|
|
# don't lose this function comment ...
|
|
"""Does nothing.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this function comment
|
|
|
|
|
|
class CommentBeforeDocstring():
|
|
# don't lose this class comment ...
|
|
"""Empty class.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this class comment
|
|
|
|
|
|
class IndentMeSome:
|
|
def doc_string_without_linebreak_after_colon(self): """ This is somewhat strange
|
|
a
|
|
b
|
|
We format this a is the docstring had started properly indented on the next
|
|
line if the target indentation. This may we incorrect since source and target
|
|
indentation can be incorrect, but this is also an edge case.
|
|
"""
|
|
|
|
|
|
class IgnoreImplicitlyConcatenatedStrings:
|
|
"""""" ""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break1():
|
|
"""
|
|
he said "the news of my death have been greatly exaggerated"
|
|
"""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break2():
|
|
"""he said "the news of my death have been greatly exaggerated"
|
|
"""
|
|
|
|
|
|
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 CommentAfterDocstring1:
|
|
"""Browse module classes and functions in IDLE."""
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring2:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring3:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring4:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring5:
|
|
"""Browse module classes and functions in IDLE."""
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
|
|
def f():
|
|
"""Browse module classes and functions in IDLE."""
|
|
# ^ Do not insert a newline above here
|
|
|
|
pass
|
|
|
|
|
|
class TabbedIndent:
|
|
def tabbed_indent(self):
|
|
"""check for correct tabbed formatting
|
|
^^^^^^^^^^
|
|
Normal indented line
|
|
- author
|
|
"""
|
|
|
|
|
|
def single_quoted():
|
|
' content\ '
|
|
return
|
|
```
|
|
|
|
## Outputs
|
|
### Output 1
|
|
```
|
|
indent-style = space
|
|
line-width = 88
|
|
indent-width = 4
|
|
quote-style = Double
|
|
line-ending = LineFeed
|
|
magic-trailing-comma = Respect
|
|
docstring-code = Disabled
|
|
docstring-code-line-width = "dynamic"
|
|
preview = Disabled
|
|
target_version = 3.9
|
|
source_type = Python
|
|
```
|
|
|
|
```python
|
|
def single_line_backslashes1():
|
|
"""content\ """
|
|
return
|
|
|
|
|
|
def single_line_backslashes2():
|
|
"""content\\"""
|
|
return
|
|
|
|
|
|
def single_line_backslashes3():
|
|
"""content\\\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes1():
|
|
"""This is a docstring with
|
|
some lines of text\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes2():
|
|
"""This is a docstring with
|
|
some lines of text\\"""
|
|
return
|
|
|
|
|
|
def multiline_backslashes3():
|
|
"""This is a docstring with
|
|
some lines of text\\\ """
|
|
return
|
|
|
|
|
|
def multiple_negatively_indented_docstring_lines():
|
|
"""a
|
|
b
|
|
c
|
|
d
|
|
e
|
|
"""
|
|
|
|
|
|
def overindentend_docstring():
|
|
"""a
|
|
over-indented
|
|
"""
|
|
|
|
|
|
def comment_before_docstring():
|
|
# don't lose this function comment ...
|
|
"""Does nothing.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this function comment
|
|
|
|
|
|
class CommentBeforeDocstring:
|
|
# don't lose this class comment ...
|
|
"""Empty class.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this class comment
|
|
|
|
|
|
class IndentMeSome:
|
|
def doc_string_without_linebreak_after_colon(self):
|
|
"""This is somewhat strange
|
|
a
|
|
b
|
|
We format this a is the docstring had started properly indented on the next
|
|
line if the target indentation. This may we incorrect since source and target
|
|
indentation can be incorrect, but this is also an edge case.
|
|
"""
|
|
|
|
|
|
class IgnoreImplicitlyConcatenatedStrings:
|
|
"""""" ""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break1():
|
|
"""
|
|
he said "the news of my death have been greatly exaggerated"
|
|
"""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break2():
|
|
"""he said "the news of my death have been greatly exaggerated" """
|
|
|
|
|
|
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 CommentAfterDocstring1:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring2:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring3:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring4:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring5:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
|
|
def f():
|
|
"""Browse module classes and functions in IDLE."""
|
|
# ^ Do not insert a newline above here
|
|
|
|
pass
|
|
|
|
|
|
class TabbedIndent:
|
|
def tabbed_indent(self):
|
|
"""check for correct tabbed formatting
|
|
^^^^^^^^^^
|
|
Normal indented line
|
|
- author
|
|
"""
|
|
|
|
|
|
def single_quoted():
|
|
"content\ "
|
|
return
|
|
```
|
|
|
|
|
|
### Output 2
|
|
```
|
|
indent-style = space
|
|
line-width = 88
|
|
indent-width = 2
|
|
quote-style = Double
|
|
line-ending = LineFeed
|
|
magic-trailing-comma = Respect
|
|
docstring-code = Disabled
|
|
docstring-code-line-width = "dynamic"
|
|
preview = Disabled
|
|
target_version = 3.9
|
|
source_type = Python
|
|
```
|
|
|
|
```python
|
|
def single_line_backslashes1():
|
|
"""content\ """
|
|
return
|
|
|
|
|
|
def single_line_backslashes2():
|
|
"""content\\"""
|
|
return
|
|
|
|
|
|
def single_line_backslashes3():
|
|
"""content\\\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes1():
|
|
"""This is a docstring with
|
|
some lines of text\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes2():
|
|
"""This is a docstring with
|
|
some lines of text\\"""
|
|
return
|
|
|
|
|
|
def multiline_backslashes3():
|
|
"""This is a docstring with
|
|
some lines of text\\\ """
|
|
return
|
|
|
|
|
|
def multiple_negatively_indented_docstring_lines():
|
|
"""a
|
|
b
|
|
c
|
|
d
|
|
e
|
|
"""
|
|
|
|
|
|
def overindentend_docstring():
|
|
"""a
|
|
over-indented
|
|
"""
|
|
|
|
|
|
def comment_before_docstring():
|
|
# don't lose this function comment ...
|
|
"""Does nothing.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this function comment
|
|
|
|
|
|
class CommentBeforeDocstring:
|
|
# don't lose this class comment ...
|
|
"""Empty class.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this class comment
|
|
|
|
|
|
class IndentMeSome:
|
|
def doc_string_without_linebreak_after_colon(self):
|
|
"""This is somewhat strange
|
|
a
|
|
b
|
|
We format this a is the docstring had started properly indented on the next
|
|
line if the target indentation. This may we incorrect since source and target
|
|
indentation can be incorrect, but this is also an edge case.
|
|
"""
|
|
|
|
|
|
class IgnoreImplicitlyConcatenatedStrings:
|
|
"""""" ""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break1():
|
|
"""
|
|
he said "the news of my death have been greatly exaggerated"
|
|
"""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break2():
|
|
"""he said "the news of my death have been greatly exaggerated" """
|
|
|
|
|
|
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 CommentAfterDocstring1:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring2:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring3:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring4:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring5:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
|
|
def f():
|
|
"""Browse module classes and functions in IDLE."""
|
|
# ^ Do not insert a newline above here
|
|
|
|
pass
|
|
|
|
|
|
class TabbedIndent:
|
|
def tabbed_indent(self):
|
|
"""check for correct tabbed formatting
|
|
^^^^^^^^^^
|
|
Normal indented line
|
|
- author
|
|
"""
|
|
|
|
|
|
def single_quoted():
|
|
"content\ "
|
|
return
|
|
```
|
|
|
|
|
|
### Output 3
|
|
```
|
|
indent-style = tab
|
|
line-width = 88
|
|
indent-width = 8
|
|
quote-style = Double
|
|
line-ending = LineFeed
|
|
magic-trailing-comma = Respect
|
|
docstring-code = Disabled
|
|
docstring-code-line-width = "dynamic"
|
|
preview = Disabled
|
|
target_version = 3.9
|
|
source_type = Python
|
|
```
|
|
|
|
```python
|
|
def single_line_backslashes1():
|
|
"""content\ """
|
|
return
|
|
|
|
|
|
def single_line_backslashes2():
|
|
"""content\\"""
|
|
return
|
|
|
|
|
|
def single_line_backslashes3():
|
|
"""content\\\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes1():
|
|
"""This is a docstring with
|
|
some lines of text\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes2():
|
|
"""This is a docstring with
|
|
some lines of text\\"""
|
|
return
|
|
|
|
|
|
def multiline_backslashes3():
|
|
"""This is a docstring with
|
|
some lines of text\\\ """
|
|
return
|
|
|
|
|
|
def multiple_negatively_indented_docstring_lines():
|
|
"""a
|
|
b
|
|
c
|
|
d
|
|
e
|
|
"""
|
|
|
|
|
|
def overindentend_docstring():
|
|
"""a
|
|
over-indented
|
|
"""
|
|
|
|
|
|
def comment_before_docstring():
|
|
# don't lose this function comment ...
|
|
"""Does nothing.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this function comment
|
|
|
|
|
|
class CommentBeforeDocstring:
|
|
# don't lose this class comment ...
|
|
"""Empty class.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this class comment
|
|
|
|
|
|
class IndentMeSome:
|
|
def doc_string_without_linebreak_after_colon(self):
|
|
"""This is somewhat strange
|
|
a
|
|
b
|
|
We format this a is the docstring had started properly indented on the next
|
|
line if the target indentation. This may we incorrect since source and target
|
|
indentation can be incorrect, but this is also an edge case.
|
|
"""
|
|
|
|
|
|
class IgnoreImplicitlyConcatenatedStrings:
|
|
"""""" ""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break1():
|
|
"""
|
|
he said "the news of my death have been greatly exaggerated"
|
|
"""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break2():
|
|
"""he said "the news of my death have been greatly exaggerated" """
|
|
|
|
|
|
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 CommentAfterDocstring1:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring2:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring3:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring4:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring5:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
|
|
def f():
|
|
"""Browse module classes and functions in IDLE."""
|
|
# ^ Do not insert a newline above here
|
|
|
|
pass
|
|
|
|
|
|
class TabbedIndent:
|
|
def tabbed_indent(self):
|
|
"""check for correct tabbed formatting
|
|
^^^^^^^^^^
|
|
Normal indented line
|
|
- author
|
|
"""
|
|
|
|
|
|
def single_quoted():
|
|
"content\ "
|
|
return
|
|
```
|
|
|
|
|
|
### Output 4
|
|
```
|
|
indent-style = tab
|
|
line-width = 88
|
|
indent-width = 4
|
|
quote-style = Double
|
|
line-ending = LineFeed
|
|
magic-trailing-comma = Respect
|
|
docstring-code = Disabled
|
|
docstring-code-line-width = "dynamic"
|
|
preview = Disabled
|
|
target_version = 3.9
|
|
source_type = Python
|
|
```
|
|
|
|
```python
|
|
def single_line_backslashes1():
|
|
"""content\ """
|
|
return
|
|
|
|
|
|
def single_line_backslashes2():
|
|
"""content\\"""
|
|
return
|
|
|
|
|
|
def single_line_backslashes3():
|
|
"""content\\\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes1():
|
|
"""This is a docstring with
|
|
some lines of text\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes2():
|
|
"""This is a docstring with
|
|
some lines of text\\"""
|
|
return
|
|
|
|
|
|
def multiline_backslashes3():
|
|
"""This is a docstring with
|
|
some lines of text\\\ """
|
|
return
|
|
|
|
|
|
def multiple_negatively_indented_docstring_lines():
|
|
"""a
|
|
b
|
|
c
|
|
d
|
|
e
|
|
"""
|
|
|
|
|
|
def overindentend_docstring():
|
|
"""a
|
|
over-indented
|
|
"""
|
|
|
|
|
|
def comment_before_docstring():
|
|
# don't lose this function comment ...
|
|
"""Does nothing.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this function comment
|
|
|
|
|
|
class CommentBeforeDocstring:
|
|
# don't lose this class comment ...
|
|
"""Empty class.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this class comment
|
|
|
|
|
|
class IndentMeSome:
|
|
def doc_string_without_linebreak_after_colon(self):
|
|
"""This is somewhat strange
|
|
a
|
|
b
|
|
We format this a is the docstring had started properly indented on the next
|
|
line if the target indentation. This may we incorrect since source and target
|
|
indentation can be incorrect, but this is also an edge case.
|
|
"""
|
|
|
|
|
|
class IgnoreImplicitlyConcatenatedStrings:
|
|
"""""" ""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break1():
|
|
"""
|
|
he said "the news of my death have been greatly exaggerated"
|
|
"""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break2():
|
|
"""he said "the news of my death have been greatly exaggerated" """
|
|
|
|
|
|
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 CommentAfterDocstring1:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring2:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring3:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring4:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring5:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
|
|
def f():
|
|
"""Browse module classes and functions in IDLE."""
|
|
# ^ Do not insert a newline above here
|
|
|
|
pass
|
|
|
|
|
|
class TabbedIndent:
|
|
def tabbed_indent(self):
|
|
"""check for correct tabbed formatting
|
|
^^^^^^^^^^
|
|
Normal indented line
|
|
- author
|
|
"""
|
|
|
|
|
|
def single_quoted():
|
|
"content\ "
|
|
return
|
|
```
|
|
|
|
|
|
### Output 5
|
|
```
|
|
indent-style = space
|
|
line-width = 88
|
|
indent-width = 4
|
|
quote-style = Single
|
|
line-ending = LineFeed
|
|
magic-trailing-comma = Respect
|
|
docstring-code = Disabled
|
|
docstring-code-line-width = "dynamic"
|
|
preview = Disabled
|
|
target_version = 3.9
|
|
source_type = Python
|
|
```
|
|
|
|
```python
|
|
def single_line_backslashes1():
|
|
"""content\ """
|
|
return
|
|
|
|
|
|
def single_line_backslashes2():
|
|
"""content\\"""
|
|
return
|
|
|
|
|
|
def single_line_backslashes3():
|
|
"""content\\\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes1():
|
|
"""This is a docstring with
|
|
some lines of text\ """
|
|
return
|
|
|
|
|
|
def multiline_backslashes2():
|
|
"""This is a docstring with
|
|
some lines of text\\"""
|
|
return
|
|
|
|
|
|
def multiline_backslashes3():
|
|
"""This is a docstring with
|
|
some lines of text\\\ """
|
|
return
|
|
|
|
|
|
def multiple_negatively_indented_docstring_lines():
|
|
"""a
|
|
b
|
|
c
|
|
d
|
|
e
|
|
"""
|
|
|
|
|
|
def overindentend_docstring():
|
|
"""a
|
|
over-indented
|
|
"""
|
|
|
|
|
|
def comment_before_docstring():
|
|
# don't lose this function comment ...
|
|
"""Does nothing.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this function comment
|
|
|
|
|
|
class CommentBeforeDocstring:
|
|
# don't lose this class comment ...
|
|
"""Empty class.
|
|
|
|
But it has comments
|
|
""" # ... neither lose this class comment
|
|
|
|
|
|
class IndentMeSome:
|
|
def doc_string_without_linebreak_after_colon(self):
|
|
"""This is somewhat strange
|
|
a
|
|
b
|
|
We format this a is the docstring had started properly indented on the next
|
|
line if the target indentation. This may we incorrect since source and target
|
|
indentation can be incorrect, but this is also an edge case.
|
|
"""
|
|
|
|
|
|
class IgnoreImplicitlyConcatenatedStrings:
|
|
"""""" ''
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break1():
|
|
"""
|
|
he said "the news of my death have been greatly exaggerated"
|
|
"""
|
|
|
|
|
|
def docstring_that_ends_with_quote_and_a_line_break2():
|
|
"""he said "the news of my death have been greatly exaggerated" """
|
|
|
|
|
|
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 CommentAfterDocstring1:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring2:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring3:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring4:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class CommentAfterDocstring5:
|
|
"""Browse module classes and functions in IDLE."""
|
|
|
|
# This class is also the base class for pathbrowser.PathBrowser.
|
|
|
|
|
|
def f():
|
|
"""Browse module classes and functions in IDLE."""
|
|
# ^ Do not insert a newline above here
|
|
|
|
pass
|
|
|
|
|
|
class TabbedIndent:
|
|
def tabbed_indent(self):
|
|
"""check for correct tabbed formatting
|
|
^^^^^^^^^^
|
|
Normal indented line
|
|
- author
|
|
"""
|
|
|
|
|
|
def single_quoted():
|
|
"content\ "
|
|
return
|
|
```
|