-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Docstring formatting: Preserve tab indentation when using `indent-sty…
…le=tabs`
- Loading branch information
1 parent
7893be7
commit 83b40d6
Showing
5 changed files
with
537 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 10 additions & 0 deletions
10
...ruff_python_formatter/resources/test/fixtures/ruff/docstring_tab_indentation.options.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
[ | ||
{ | ||
"indent_style": "tab", | ||
"indent_width": 4 | ||
}, | ||
{ | ||
"indent_style": "tab", | ||
"indent_width": 8 | ||
} | ||
] |
67 changes: 67 additions & 0 deletions
67
crates/ruff_python_formatter/resources/test/fixtures/ruff/docstring_tab_indentation.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
# Tests the behavior of the formatter when it comes to tabs inside docstrings | ||
# when using `indent_style="tab` | ||
|
||
# The example below uses tabs exclusively. The formatter should preserve the tab indentation | ||
# of `arg1`. | ||
def tab_argument(arg1: str) -> None: | ||
""" | ||
Arguments: | ||
arg1: super duper arg with 2 tabs in front | ||
""" | ||
|
||
# The `arg1` is intended with spaces. The formatter should not change the spaces to a tab | ||
# because it must assume that the spaces are used for alignment and not indentation. | ||
def space_argument(arg1: str) -> None: | ||
""" | ||
Arguments: | ||
arg1: super duper arg with a tab and a space in front | ||
""" | ||
|
||
def under_indented(arg1: str) -> None: | ||
""" | ||
Arguments: | ||
arg1: super duper arg with a tab and a space in front | ||
arg2: Not properly indented | ||
""" | ||
|
||
def under_indented_tabs(arg1: str) -> None: | ||
""" | ||
Arguments: | ||
arg1: super duper arg with a tab and a space in front | ||
arg2: Not properly indented | ||
""" | ||
|
||
|
||
# The docstring itself is indented with spaces but the argument is indented by a tab. | ||
# Keep the tab indentation of the argument, convert th docstring indent to tabs. | ||
def space_indented_docstring_containing_tabs(arg1: str) -> None: | ||
""" | ||
Arguments: | ||
arg1: super duper arg | ||
""" | ||
|
||
|
||
# The docstring uses tabs, spaces, tabs indentation. | ||
# Fallback to use space indentation | ||
def mixed_indentation(arg1: str) -> None: | ||
""" | ||
Arguments: | ||
arg1: super duper arg with a tab and a space in front | ||
""" | ||
|
||
|
||
# The example shows an ascii art. The formatter should not change the spaces | ||
# to tabs because it breaks the ASCII art when inspecting the docstring with `inspect.cleandoc(ascii_art.__doc__)` | ||
# when using an indent width other than 8. | ||
def ascii_art(): | ||
r""" | ||
Look at this beautiful tree. | ||
a | ||
/ \ | ||
b c | ||
/ \ | ||
d e | ||
""" | ||
|
||
|
Oops, something went wrong.