Fix removed comments in stub files (#3745)
This commit is contained in:
parent
2593af2c5d
commit
257d392217
@ -15,6 +15,8 @@
|
|||||||
|
|
||||||
- Fix a bug where an illegal trailing comma was added to return type annotations using
|
- Fix a bug where an illegal trailing comma was added to return type annotations using
|
||||||
PEP 604 unions (#3735)
|
PEP 604 unions (#3735)
|
||||||
|
- Fix several bugs and crashes where comments in stub files were removed or mishandled
|
||||||
|
under some circumstances. (#3745)
|
||||||
- Fix a bug where multi-line open parenthesis magic comment like `type: ignore` were not
|
- Fix a bug where multi-line open parenthesis magic comment like `type: ignore` were not
|
||||||
correctly parsed (#3740)
|
correctly parsed (#3740)
|
||||||
|
|
||||||
|
@ -714,6 +714,11 @@ def is_multiline_string(leaf: Leaf) -> bool:
|
|||||||
|
|
||||||
def is_stub_suite(node: Node) -> bool:
|
def is_stub_suite(node: Node) -> bool:
|
||||||
"""Return True if `node` is a suite with a stub body."""
|
"""Return True if `node` is a suite with a stub body."""
|
||||||
|
|
||||||
|
# If there is a comment, we want to keep it.
|
||||||
|
if node.prefix.strip():
|
||||||
|
return False
|
||||||
|
|
||||||
if (
|
if (
|
||||||
len(node.children) != 4
|
len(node.children) != 4
|
||||||
or node.children[0].type != token.NEWLINE
|
or node.children[0].type != token.NEWLINE
|
||||||
@ -722,6 +727,9 @@ def is_stub_suite(node: Node) -> bool:
|
|||||||
):
|
):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
if node.children[3].prefix.strip():
|
||||||
|
return False
|
||||||
|
|
||||||
return is_stub_body(node.children[2])
|
return is_stub_body(node.children[2])
|
||||||
|
|
||||||
|
|
||||||
@ -735,7 +743,8 @@ def is_stub_body(node: LN) -> bool:
|
|||||||
|
|
||||||
child = node.children[0]
|
child = node.children[0]
|
||||||
return (
|
return (
|
||||||
child.type == syms.atom
|
not child.prefix.strip()
|
||||||
|
and child.type == syms.atom
|
||||||
and len(child.children) == 3
|
and len(child.children) == 3
|
||||||
and all(leaf == Leaf(token.DOT, ".") for leaf in child.children)
|
and all(leaf == Leaf(token.DOT, ".") for leaf in child.children)
|
||||||
)
|
)
|
||||||
|
41
tests/data/simple_cases/ignore_pyi.py
Normal file
41
tests/data/simple_cases/ignore_pyi.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
def f(): # type: ignore
|
||||||
|
...
|
||||||
|
|
||||||
|
class x: # some comment
|
||||||
|
...
|
||||||
|
|
||||||
|
class y:
|
||||||
|
... # comment
|
||||||
|
|
||||||
|
# whitespace doesn't matter (note the next line has a trailing space and tab)
|
||||||
|
class z:
|
||||||
|
...
|
||||||
|
|
||||||
|
def g():
|
||||||
|
# hi
|
||||||
|
...
|
||||||
|
|
||||||
|
def h():
|
||||||
|
...
|
||||||
|
# bye
|
||||||
|
|
||||||
|
# output
|
||||||
|
|
||||||
|
def f(): # type: ignore
|
||||||
|
...
|
||||||
|
|
||||||
|
class x: # some comment
|
||||||
|
...
|
||||||
|
|
||||||
|
class y: ... # comment
|
||||||
|
|
||||||
|
# whitespace doesn't matter (note the next line has a trailing space and tab)
|
||||||
|
class z: ...
|
||||||
|
|
||||||
|
def g():
|
||||||
|
# hi
|
||||||
|
...
|
||||||
|
|
||||||
|
def h():
|
||||||
|
...
|
||||||
|
# bye
|
@ -33,9 +33,10 @@ def check_file(
|
|||||||
@pytest.mark.parametrize("filename", all_data_cases("simple_cases"))
|
@pytest.mark.parametrize("filename", all_data_cases("simple_cases"))
|
||||||
def test_simple_format(filename: str) -> None:
|
def test_simple_format(filename: str) -> None:
|
||||||
magic_trailing_comma = filename != "skip_magic_trailing_comma"
|
magic_trailing_comma = filename != "skip_magic_trailing_comma"
|
||||||
check_file(
|
mode = black.Mode(
|
||||||
"simple_cases", filename, black.Mode(magic_trailing_comma=magic_trailing_comma)
|
magic_trailing_comma=magic_trailing_comma, is_pyi=filename.endswith("_pyi")
|
||||||
)
|
)
|
||||||
|
check_file("simple_cases", filename, mode)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("filename", all_data_cases("preview"))
|
@pytest.mark.parametrize("filename", all_data_cases("preview"))
|
||||||
|
Loading…
Reference in New Issue
Block a user