From e3ccabb23c5dc5495bd8f96b5c90c1db6a350d6d Mon Sep 17 00:00:00 2001 From: Bryan Bugyi Date: Sat, 5 Sep 2020 20:24:00 -0400 Subject: [PATCH 1/1] Fix unstable formatting on string split + % formatting (#1680) Fixes #1595 --- src/black/__init__.py | 2 +- src/blib2to3/pgen2/pgen.py | 3 +-- tests/data/long_strings.py | 6 ++---- tests/data/long_strings__regression.py | 21 +++++++++++++++++---- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/black/__init__.py b/src/black/__init__.py index f7e7603..eed059e 100644 --- a/src/black/__init__.py +++ b/src/black/__init__.py @@ -2668,9 +2668,9 @@ def transform_line( transformers = [ string_merge, string_paren_strip, + string_split, delimiter_split, standalone_comment_split, - string_split, string_paren_wrap, rhs, ] diff --git a/src/blib2to3/pgen2/pgen.py b/src/blib2to3/pgen2/pgen.py index 13ec51d..a685145 100644 --- a/src/blib2to3/pgen2/pgen.py +++ b/src/blib2to3/pgen2/pgen.py @@ -168,8 +168,7 @@ class ParserGenerator(object): if symbol in inverse: raise ValueError( "rule %s is ambiguous; %s is in the first sets of %s as well" - " as %s" - % (name, symbol, label, inverse[symbol]) + " as %s" % (name, symbol, label, inverse[symbol]) ) inverse[symbol] = label self.first[name] = totalset diff --git a/tests/data/long_strings.py b/tests/data/long_strings.py index e1ed90f..151396b 100644 --- a/tests/data/long_strings.py +++ b/tests/data/long_strings.py @@ -380,8 +380,7 @@ fmt_string2 = "But what about when the string is {} but {}".format( old_fmt_string1 = ( "While we are on the topic of %s, we should also note that old-style formatting" - " must also be preserved, since some %s still uses it." - % ("formatting", "code") + " must also be preserved, since some %s still uses it." % ("formatting", "code") ) old_fmt_string2 = "This is a %s %s %s %s" % ( @@ -448,8 +447,7 @@ assert some_type_of_boolean_expression, ( assert some_type_of_boolean_expression, ( "Followed by a really really really long string that is used to provide context to" - " the AssertionError exception, which uses dynamic string %s." - % "formatting" + " the AssertionError exception, which uses dynamic string %s." % "formatting" ) assert some_type_of_boolean_expression, ( diff --git a/tests/data/long_strings__regression.py b/tests/data/long_strings__regression.py index 044bb4a..33bf14c 100644 --- a/tests/data/long_strings__regression.py +++ b/tests/data/long_strings__regression.py @@ -310,6 +310,13 @@ class Step(StepBase): passenger_association=passenger_association, ) +if __name__ == "__main__": + for i in range(4, 8): + cmd = ( + r"for pid in $(ps aux | grep paster | grep -v grep | grep '\-%d' | awk '{print $2}'); do kill $pid; done" + % (i) + ) + # output @@ -435,14 +442,12 @@ func_call_where_string_arg_has_method_call_and_bad_parens( func_call_where_string_arg_has_old_fmt_and_bad_parens( "A long string with {}. This string is so long that it is ridiculous. It can't fit" - " on one line at alllll." - % "formatting", + " on one line at alllll." % "formatting", ) func_call_where_string_arg_has_old_fmt_and_bad_parens( "A long string with {}. This {} is so long that it is ridiculous. It can't fit on" - " one line at alllll." - % ("formatting", "string"), + " one line at alllll." % ("formatting", "string"), ) @@ -702,3 +707,11 @@ class Step(StepBase): passenger_association=passenger_association, ) ) + + +if __name__ == "__main__": + for i in range(4, 8): + cmd = ( + r"for pid in $(ps aux | grep paster | grep -v grep | grep '\-%d' | awk" + r" '{print $2}'); do kill $pid; done" % (i) + ) -- 2.39.5