From a9ca7bd8d70012fd76d89376483e3cdbd1727448 Mon Sep 17 00:00:00 2001 From: dankrzeminski32 Date: Tue, 3 Sep 2024 10:07:16 -0500 Subject: [PATCH 1/4] handle single value return type with comments --- src/black/linegen.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/black/linegen.py b/src/black/linegen.py index 46945ca2a14..cba92a43dc5 100644 --- a/src/black/linegen.py +++ b/src/black/linegen.py @@ -1116,6 +1116,14 @@ def bracket_split_build_line( ) # Don't add one inside parenthesized return annotations and get_annotation_type(leaves[0]) != "return" + # Don't add comment for single element return type with comments + and not ( + sum(leaf.type is not STANDALONE_COMMENT for leaf in leaves) < 2 + and any( + leaf.parent is not None and leaf.parent.type != syms.parameters + for leaf in leaves + ) + ) # Don't add one inside PEP 604 unions and not ( leaves[0].parent From f84fc76819c9313fefea60fe151830b42a733323 Mon Sep 17 00:00:00 2001 From: dankrzeminski32 Date: Tue, 3 Sep 2024 10:13:51 -0500 Subject: [PATCH 2/4] add a test case for previously broken scenario --- .../single_element_parametized_return_type.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 tests/data/cases/single_element_parametized_return_type.py diff --git a/tests/data/cases/single_element_parametized_return_type.py b/tests/data/cases/single_element_parametized_return_type.py new file mode 100644 index 00000000000..95d80f4fa64 --- /dev/null +++ b/tests/data/cases/single_element_parametized_return_type.py @@ -0,0 +1,50 @@ +def MyClass(): + pass + + +def create_my_nested_class() -> ( + # test asnkdasldnsalkdnaskldnaklsdnsakln + int +): + class MyNestedClass(MyClass): + pass + return MyNestedClass + + +def create_my_nested_class() -> ( + # test asnkdasldnsalkdnaskldnaklsdnsakln + # test asnkdasldnsalkdnaskldnaklsdnsakln + int + # test asnkdasldnsalkdnaskldnaklsdnsakln +): + class MyNestedClass(MyClass): + pass + return MyNestedClass + +# output + + +def MyClass(): + pass + + +def create_my_nested_class() -> ( + # test asnkdasldnsalkdnaskldnaklsdnsakln + int +): + class MyNestedClass(MyClass): + pass + + return MyNestedClass + + +def create_my_nested_class() -> ( + # test asnkdasldnsalkdnaskldnaklsdnsakln + # test asnkdasldnsalkdnaskldnaklsdnsakln + int + # test asnkdasldnsalkdnaskldnaklsdnsakln +): + class MyNestedClass(MyClass): + pass + + return MyNestedClass From 1086422d907260f4e983b6bc252e1b3ddcc7e8ea Mon Sep 17 00:00:00 2001 From: dankrzeminski32 Date: Tue, 3 Sep 2024 12:23:43 -0500 Subject: [PATCH 3/4] add entry to changelog --- CHANGES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index a83a4df0023..118bbe59a4e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -12,6 +12,9 @@ +Fix `ASTSafetyError` crash when return type contains one element and comments spanning +multiple lines. + ### Preview style From 8dc4901adef4d5847bfebe6155d8f87c04519407 Mon Sep 17 00:00:00 2001 From: dankrzeminski32 Date: Tue, 3 Sep 2024 12:25:31 -0500 Subject: [PATCH 4/4] include pr number in changes entry --- CHANGES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index 118bbe59a4e..2cd3f133f6f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -13,7 +13,7 @@ Fix `ASTSafetyError` crash when return type contains one element and comments spanning -multiple lines. +multiple lines. (#4444) ### Preview style