diff --git a/CHANGELOG b/CHANGELOG
index d331f8d..fd92065 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,8 +5,11 @@
 ## [0.11.1] UNRELEASED
 ### Fixed
 - Enforce splitting each element in a dictionary if comma terminated.
-- It's okay to split in the middle of a dotted name if the whole expression is
-  going to go over the column limit.
+
+### Changed
+- Issue #228: Return exit code 0 on success, regardless of whether files were
+  changed.  (Previously, 0 meant success with no files
+  modified, and 2 meant success with at least one file modified.)
 
 ## [0.11.0] 2016-07-17
 ### Added
diff --git a/yapf/__init__.py b/yapf/__init__.py
index dfbb8ee..145d8f4 100644
--- a/yapf/__init__.py
+++ b/yapf/__init__.py
@@ -161,7 +161,7 @@ def main(argv):
         lines=lines,
         verify=args.verify)
     sys.stdout.write(reformatted_source)
-    return 2 if changed else 0
+    return 0
 
   files = file_resources.GetCommandLineFiles(args.files, args.recursive,
                                              args.exclude)
@@ -175,7 +175,7 @@ def main(argv):
       in_place=args.in_place,
       print_diff=args.diff,
       verify=args.verify)
-  return 2 if changed else 0
+  return 0
 
 
 def FormatFiles(filenames,
diff --git a/yapf/yapflib/split_penalty.py b/yapf/yapflib/split_penalty.py
index 50796de..4b802c0 100644
--- a/yapf/yapflib/split_penalty.py
+++ b/yapf/yapflib/split_penalty.py
@@ -185,8 +185,8 @@ class _TreePenaltyAssigner(pytree_visitor.PyTreeVisitor):
             #   atom tr1() tr2
             # It may be necessary (though undesirable) to split up a previous
             # function call's parentheses to the next line.
-            self._SetStronglyConnected(prev_trailer.children[-1])
-          self._SetStronglyConnected(cur_trailer.children[0])
+            self._SetUnbreakable(prev_trailer.children[-1])
+          self._SetUnbreakable(cur_trailer.children[0])
           prev_trailer_idx = cur_trailer_idx
         else:
           break

yapf returns an exit code of 2 on unformatted but valid input.
Hello there and thanks for developing this much appreciated python formatter.

I’m opening this issue as I’m not sure to understand the logic behind yapf's exit code return when applying it on unformatted and valid input. Indeed, yapf returns an exit code of 2 in such case (which implies something went wrong), yet a valid formatted output is returned. I would consider the operation successful, hence expect an exit code of 0.

Consequently, this behavior tends to break scripts where flow execution rely on the format's success.

I saw a related issue: https://github.com/google/yapf/issues/186 but I don't see the need to inform output has been modified compared to input (i.e. formatted) by returning a status code other than 0 as formatting is the purpose of the tool. Otherwise, _--diff_ option seems the right fit if this information is needed (not to mention UNIX tools can also answer this).

Am I missing something or is this behavior indeed odd? Thanks!
diff --git a/yapftests/main_test.py b/yapftests/main_test.py
index e5a5a74..42e6f9b 100644
--- a/yapftests/main_test.py
+++ b/yapftests/main_test.py
@@ -91,7 +91,7 @@ class MainTest(unittest.TestCase):
     with patched_input(code):
       with captured_output() as (out, err):
         ret = yapf.main(['-', '--style=chromium'])
-        self.assertEqual(ret, 2)
+        self.assertEqual(ret, 0)
         self.assertEqual(out.getvalue(), chromium_code)
 
   def testEchoBadInput(self):
@@ -116,3 +116,4 @@ class MainTest(unittest.TestCase):
       self.assertEqual(ret, 0)
       version = 'yapf {}\n'.format(yapf.__version__)
       self.assertEqual(version, out.getvalue())
+
diff --git a/yapftests/reformatter_test.py b/yapftests/reformatter_test.py
index cb2e6d5..3092344 100644
--- a/yapftests/reformatter_test.py
+++ b/yapftests/reformatter_test.py
@@ -1750,20 +1750,6 @@ class BuganizerFixes(ReformatterTest):
   def setUpClass(cls):
     style.SetGlobalStyle(style.CreateChromiumStyle())
 
-  def testB30442148(self):
-    unformatted_code = textwrap.dedent("""\
-        def lulz():
-          return (some_long_module_name.SomeLongClassName.
-                  some_long_attribute_name.some_long_method_name())
-        """)
-    expected_formatted_code = textwrap.dedent("""\
-        def lulz():
-          return (some_long_module_name.SomeLongClassName.some_long_attribute_name.
-                  some_long_method_name())
-        """)
-    uwlines = _ParseAndUnwrap(unformatted_code)
-    self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
-
   def testB26868213(self):
     unformatted_code = textwrap.dedent("""\
       def _():
@@ -1843,10 +1829,9 @@ class BuganizerFixes(ReformatterTest):
         """)
     expected_formatted_code = textwrap.dedent("""\
         def _():
-          _xxxxxxxxxxxxxxx(
-              aaaaaaaa,
-              bbbbbbbbbbbbbb.cccccccccc[dddddddddddddddddddddddddddd.
-                                        eeeeeeeeeeeeeeeeeeeeee.fffffffffffffffffffff])
+          _xxxxxxxxxxxxxxx(aaaaaaaa, bbbbbbbbbbbbbb.cccccccccc[
+              dddddddddddddddddddddddddddd.eeeeeeeeeeeeeeeeeeeeee.
+              fffffffffffffffffffff])
         """)
     uwlines = _ParseAndUnwrap(unformatted_code)
     self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
diff --git a/yapftests/split_penalty_test.py b/yapftests/split_penalty_test.py
index 51f8f3e..b21d227 100644
--- a/yapftests/split_penalty_test.py
+++ b/yapftests/split_penalty_test.py
@@ -221,10 +221,10 @@ class SplitPenaltyTest(unittest.TestCase):
     self._CheckPenalties(tree, [
         ('foo', None),
         ('.', UNBREAKABLE),
-        ('bar', DOTTED_NAME),
-        ('.', STRONGLY_CONNECTED),
-        ('baz', DOTTED_NAME),
-        ('(', STRONGLY_CONNECTED),
+        ('bar', UNBREAKABLE),
+        ('.', UNBREAKABLE),
+        ('baz', UNBREAKABLE),
+        ('(', UNBREAKABLE),
         ('1', CONTIGUOUS_LIST),
         (',', CONTIGUOUS_LIST),
         ('2', CONTIGUOUS_LIST),

pip install -e .
parse_log_pytest
pytest
pytest
apt-get update apt-get install -y gcc
3.9
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup @ file:///croot/exceptiongroup_1706031385326/work
iniconfig @ file:///home/linux1/recipes/ci/iniconfig_1610983019677/work
packaging @ file:///croot/packaging_1734472117206/work
pluggy @ file:///croot/pluggy_1733169602837/work
pytest @ file:///croot/pytest_1738938843180/work
tomli @ file:///opt/conda/conda-bld/tomli_1657175507142/work
-e git+https://github.com/google/yapf.git@b8d20bd2d9d69fda6c1b102c0c07f97931e87132#egg=yapf

name: yapf
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - exceptiongroup=1.2.0=py39h06a4308_0
  - iniconfig=1.1.1=pyhd3eb1b0_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - packaging=24.2=py39h06a4308_0
  - pip=25.0=py39h06a4308_0
  - pluggy=1.5.0=py39h06a4308_0
  - pytest=8.3.4=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tomli=2.0.1=py39h06a4308_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
prefix: /opt/conda/envs/yapf

yapftests/main_test.py::MainTest::testEchoInputWithStyle yapftests/reformatter_test.py::BuganizerFixes::testB29093579
yapftests/split_penalty_test.py::SplitPenaltyTest::testFuncCalls yapftests/split_penalty_test.py::SplitPenaltyTest::testStronglyConnected yapftests/split_penalty_test.py::SplitPenaltyTest::testUnbreakable
yapftests/main_test.py::RunMainTest::testShouldHandleYapfError yapftests/main_test.py::MainTest::testEchoBadInput yapftests/main_test.py::MainTest::testEchoInput yapftests/main_test.py::MainTest::testHelp yapftests/main_test.py::MainTest::testNoPythonFilesMatched yapftests/main_test.py::MainTest::testVersion yapftests/reformatter_test.py::BasicReformatterTest::testArgsAndKwargsFormatting yapftests/reformatter_test.py::BasicReformatterTest::testBinaryOperators yapftests/reformatter_test.py::BasicReformatterTest::testBlankLinesAtEndOfFile yapftests/reformatter_test.py::BasicReformatterTest::testBlankLinesBeforeDecorators yapftests/reformatter_test.py::BasicReformatterTest::testBlankLinesBeforeFunctionsNotInColumnZero yapftests/reformatter_test.py::BasicReformatterTest::testClosingBracketIndent yapftests/reformatter_test.py::BasicReformatterTest::testClosingBracketsInlinedInCall yapftests/reformatter_test.py::BasicReformatterTest::testCommentBeforeFuncDef yapftests/reformatter_test.py::BasicReformatterTest::testCommentBetweenDecorators yapftests/reformatter_test.py::BasicReformatterTest::testCommentColumnLimitOverflow yapftests/reformatter_test.py::BasicReformatterTest::testComments yapftests/reformatter_test.py::BasicReformatterTest::testCommentsInDataLiteral yapftests/reformatter_test.py::BasicReformatterTest::testCommentsWithContinuationMarkers yapftests/reformatter_test.py::BasicReformatterTest::testComprehensionForAndIf yapftests/reformatter_test.py::BasicReformatterTest::testContiguousList yapftests/reformatter_test.py::BasicReformatterTest::testContinuationIndent yapftests/reformatter_test.py::BasicReformatterTest::testContinuationMarkers yapftests/reformatter_test.py::BasicReformatterTest::testContinuationSpaceRetention yapftests/reformatter_test.py::BasicReformatterTest::testDictSetGenerator yapftests/reformatter_test.py::BasicReformatterTest::testDictionaryMakerFormatting yapftests/reformatter_test.py::BasicReformatterTest::testDocstringAndMultilineComment yapftests/reformatter_test.py::BasicReformatterTest::testDocstrings yapftests/reformatter_test.py::BasicReformatterTest::testDontAddBlankLineAfterMultilineString yapftests/reformatter_test.py::BasicReformatterTest::testDontSplitKeywordValueArguments yapftests/reformatter_test.py::BasicReformatterTest::testEmptyContainers yapftests/reformatter_test.py::BasicReformatterTest::testEndingComment yapftests/reformatter_test.py::BasicReformatterTest::testEndingWhitespaceAfterSimpleStatement yapftests/reformatter_test.py::BasicReformatterTest::testExcessCharacters yapftests/reformatter_test.py::BasicReformatterTest::testExcessLineCountWithDefaultKeywords yapftests/reformatter_test.py::BasicReformatterTest::testExpressionPenalties yapftests/reformatter_test.py::BasicReformatterTest::testFormattingListComprehensions yapftests/reformatter_test.py::BasicReformatterTest::testFunctionCallArguments yapftests/reformatter_test.py::BasicReformatterTest::testFunctionCallContinuationLine yapftests/reformatter_test.py::BasicReformatterTest::testFunctionCallInDict yapftests/reformatter_test.py::BasicReformatterTest::testFunctionCallInNestedDict yapftests/reformatter_test.py::BasicReformatterTest::testI18n yapftests/reformatter_test.py::BasicReformatterTest::testI18nCommentsInDataLiteral yapftests/reformatter_test.py::BasicReformatterTest::testI18nNonFormatting yapftests/reformatter_test.py::BasicReformatterTest::testIfConditionalParens yapftests/reformatter_test.py::BasicReformatterTest::testIfExpressionWithFunctionCall yapftests/reformatter_test.py::BasicReformatterTest::testImportAsList yapftests/reformatter_test.py::BasicReformatterTest::testLineDepthOfSingleLineStatement yapftests/reformatter_test.py::BasicReformatterTest::testLineWrapInForExpression yapftests/reformatter_test.py::BasicReformatterTest::testListComprehension yapftests/reformatter_test.py::BasicReformatterTest::testMatchingParenSplittingMatching yapftests/reformatter_test.py::BasicReformatterTest::testMultilineComment yapftests/reformatter_test.py::BasicReformatterTest::testMultilineCommentReformatted yapftests/reformatter_test.py::BasicReformatterTest::testMultilineDocstringAndMultilineComment yapftests/reformatter_test.py::BasicReformatterTest::testMultilineLambdas yapftests/reformatter_test.py::BasicReformatterTest::testMultilineShebang yapftests/reformatter_test.py::BasicReformatterTest::testMultilineString yapftests/reformatter_test.py::BasicReformatterTest::testMultipleUgliness yapftests/reformatter_test.py::BasicReformatterTest::testNoBreakOutsideOfBracket yapftests/reformatter_test.py::BasicReformatterTest::testNoKeywordArgumentBreakage yapftests/reformatter_test.py::BasicReformatterTest::testNoPenaltySplitting yapftests/reformatter_test.py::BasicReformatterTest::testNoQueueSeletionInMiddleOfLine yapftests/reformatter_test.py::BasicReformatterTest::testNoSpaceBetweenUnaryOpAndOpeningParen yapftests/reformatter_test.py::BasicReformatterTest::testNoSpacesAroundKeywordDefaultValues yapftests/reformatter_test.py::BasicReformatterTest::testNoSpacesBetweenOpeningBracketAndStartingOperator yapftests/reformatter_test.py::BasicReformatterTest::testNoSpacesBetweenSubscriptsAndCalls yapftests/reformatter_test.py::BasicReformatterTest::testNoSplittingAroundTermOperators yapftests/reformatter_test.py::BasicReformatterTest::testNoSplittingBeforeEndingSubscriptBracket yapftests/reformatter_test.py::BasicReformatterTest::testNoSplittingOnSingleArgument yapftests/reformatter_test.py::BasicReformatterTest::testNoSplittingWhenBinPacking yapftests/reformatter_test.py::BasicReformatterTest::testNoSplittingWithinSubscriptList yapftests/reformatter_test.py::BasicReformatterTest::testNotSplittingAfterSubscript yapftests/reformatter_test.py::BasicReformatterTest::testOpeningAndClosingBrackets yapftests/reformatter_test.py::BasicReformatterTest::testOverColumnLimit yapftests/reformatter_test.py::BasicReformatterTest::testRelativeImportStatements yapftests/reformatter_test.py::BasicReformatterTest::testRelaxArraySubscriptAffinity yapftests/reformatter_test.py::BasicReformatterTest::testSimple yapftests/reformatter_test.py::BasicReformatterTest::testSimpleFunctions yapftests/reformatter_test.py::BasicReformatterTest::testSimpleFunctionsWithTrailingComments yapftests/reformatter_test.py::BasicReformatterTest::testSimpleMultilineCode yapftests/reformatter_test.py::BasicReformatterTest::testSimpleMultilineWithComments yapftests/reformatter_test.py::BasicReformatterTest::testSingleComment yapftests/reformatter_test.py::BasicReformatterTest::testSingleLineFunctions yapftests/reformatter_test.py::BasicReformatterTest::testSingleLineList yapftests/reformatter_test.py::BasicReformatterTest::testSpaceAfterNotOperator yapftests/reformatter_test.py::BasicReformatterTest::testSplitListWithComment yapftests/reformatter_test.py::BasicReformatterTest::testSplitListWithInterspersedComments yapftests/reformatter_test.py::BasicReformatterTest::testSplitListWithTerminatingComma yapftests/reformatter_test.py::BasicReformatterTest::testSplitStringsIfSurroundedByParens yapftests/reformatter_test.py::BasicReformatterTest::testSplittingArgumentsTerminatedByComma yapftests/reformatter_test.py::BasicReformatterTest::testSplittingArraysSensibly yapftests/reformatter_test.py::BasicReformatterTest::testSplittingBeforeFirstElementListArgument yapftests/reformatter_test.py::BasicReformatterTest::testSplittingOneArgumentList yapftests/reformatter_test.py::BasicReformatterTest::testStableDictionaryFormatting yapftests/reformatter_test.py::BasicReformatterTest::testTrailerOnSingleLine yapftests/reformatter_test.py::BasicReformatterTest::testTrailingCommaAndBracket yapftests/reformatter_test.py::BasicReformatterTest::testTupleCommaBeforeLastParen yapftests/reformatter_test.py::BasicReformatterTest::testUnaryNotOperator yapftests/reformatter_test.py::BasicReformatterTest::testUnaryOpInDictionaryValue yapftests/reformatter_test.py::BasicReformatterTest::testUnbreakableNot yapftests/reformatter_test.py::BasicReformatterTest::testUnformattedAfterMultilineString yapftests/reformatter_test.py::BuganizerFixes::testB13900309 yapftests/reformatter_test.py::BuganizerFixes::testB14406499 yapftests/reformatter_test.py::BuganizerFixes::testB14468247 yapftests/reformatter_test.py::BuganizerFixes::testB15438132 yapftests/reformatter_test.py::BuganizerFixes::testB15542157 yapftests/reformatter_test.py::BuganizerFixes::testB15597568 yapftests/reformatter_test.py::BuganizerFixes::testB15697268 yapftests/reformatter_test.py::BuganizerFixes::testB15884241 yapftests/reformatter_test.py::BuganizerFixes::testB16572361 yapftests/reformatter_test.py::BuganizerFixes::testB16783631 yapftests/reformatter_test.py::BuganizerFixes::testB17011869 yapftests/reformatter_test.py::BuganizerFixes::testB17133019 yapftests/reformatter_test.py::BuganizerFixes::testB17489866 yapftests/reformatter_test.py::BuganizerFixes::testB17534869 yapftests/reformatter_test.py::BuganizerFixes::testB18255697 yapftests/reformatter_test.py::BuganizerFixes::testB18256666 yapftests/reformatter_test.py::BuganizerFixes::testB18256826 yapftests/reformatter_test.py::BuganizerFixes::testB18257115 yapftests/reformatter_test.py::BuganizerFixes::testB19073499 yapftests/reformatter_test.py::BuganizerFixes::testB19194420 yapftests/reformatter_test.py::BuganizerFixes::testB19287512 yapftests/reformatter_test.py::BuganizerFixes::testB19353268 yapftests/reformatter_test.py::BuganizerFixes::testB19372573 yapftests/reformatter_test.py::BuganizerFixes::testB19377034 yapftests/reformatter_test.py::BuganizerFixes::testB19547210 yapftests/reformatter_test.py::BuganizerFixes::testB19626808 yapftests/reformatter_test.py::BuganizerFixes::testB20016122 yapftests/reformatter_test.py::BuganizerFixes::testB20073838 yapftests/reformatter_test.py::BuganizerFixes::testB20127686 yapftests/reformatter_test.py::BuganizerFixes::testB20128830 yapftests/reformatter_test.py::BuganizerFixes::testB20551180 yapftests/reformatter_test.py::BuganizerFixes::testB20559654 yapftests/reformatter_test.py::BuganizerFixes::testB20562732 yapftests/reformatter_test.py::BuganizerFixes::testB20605036 yapftests/reformatter_test.py::BuganizerFixes::testB20813997 yapftests/reformatter_test.py::BuganizerFixes::testB20849933 yapftests/reformatter_test.py::BuganizerFixes::testB22527411 yapftests/reformatter_test.py::BuganizerFixes::testB23445244 yapftests/reformatter_test.py::BuganizerFixes::testB23935890 yapftests/reformatter_test.py::BuganizerFixes::testB23943842 yapftests/reformatter_test.py::BuganizerFixes::testB23944849 yapftests/reformatter_test.py::BuganizerFixes::testB25131481 yapftests/reformatter_test.py::BuganizerFixes::testB25136704 yapftests/reformatter_test.py::BuganizerFixes::testB25136820 yapftests/reformatter_test.py::BuganizerFixes::testB25157123 yapftests/reformatter_test.py::BuganizerFixes::testB25165602 yapftests/reformatter_test.py::BuganizerFixes::testB25324261 yapftests/reformatter_test.py::BuganizerFixes::testB25505359 yapftests/reformatter_test.py::BuganizerFixes::testB26382315 yapftests/reformatter_test.py::BuganizerFixes::testB26868213 yapftests/reformatter_test.py::BuganizerFixes::testB27266946 yapftests/reformatter_test.py::BuganizerFixes::testB27590179 yapftests/reformatter_test.py::BuganizerFixes::testB27616132 yapftests/reformatter_test.py::BuganizerFixes::testB28414371 yapftests/reformatter_test.py::BuganizerFixes::testB29908765 yapftests/reformatter_test.py::BuganizerFixes::testB30087362 yapftests/reformatter_test.py::BuganizerFixes::testB30173198 yapftests/reformatter_test.py::TestsForPEP8Style::testAlignClosingBracketWithVisualIndentation yapftests/reformatter_test.py::TestsForPEP8Style::testB20016122 yapftests/reformatter_test.py::TestsForPEP8Style::testContiguousListEndingWithComment yapftests/reformatter_test.py::TestsForPEP8Style::testContinuedNonOudentedLine yapftests/reformatter_test.py::TestsForPEP8Style::testHangingIndentCollision yapftests/reformatter_test.py::TestsForPEP8Style::testIndent4 yapftests/reformatter_test.py::TestsForPEP8Style::testIndentSizeChanging yapftests/reformatter_test.py::TestsForPEP8Style::testNoBlankBetweenClassAndDef yapftests/reformatter_test.py::TestsForPEP8Style::testSingleLineIfStatements yapftests/reformatter_test.py::TestsForPEP8Style::testSingleWhiteBeforeTrailingComment yapftests/reformatter_test.py::TestsForPEP8Style::testSpaceBetweenEndingCommandAndClosingBracket yapftests/reformatter_test.py::TestsForPEP8Style::testSplittingBeforeFirstArgument yapftests/reformatter_test.py::TestsForPEP8Style::testSplittingBeforeLogicalOperator yapftests/reformatter_test.py::TestsForPEP8Style::testSplittingSemicolonStatements yapftests/reformatter_test.py::TestsForPEP8Style::testWrappingPercentExpressions yapftests/reformatter_test.py::TestingNotInParameters::testNotInParams yapftests/reformatter_test.py::TestsForPython3Code::testAnnotations yapftests/reformatter_test.py::TestsForPython3Code::testAsyncFunctions yapftests/reformatter_test.py::TestsForPython3Code::testExecAsNonKeyword yapftests/reformatter_test.py::TestsForPython3Code::testKeywordOnlyArgSpecifier yapftests/reformatter_test.py::TestsForPython3Code::testNoSpacesAroundPowerOparator yapftests/reformatter_test.py::TestsForFBStyle::testBreakAfterOpeningBracketIfContentsTooBig yapftests/reformatter_test.py::TestsForFBStyle::testBrokenIdempotency yapftests/reformatter_test.py::TestsForFBStyle::testDedentClosingBracket yapftests/reformatter_test.py::TestsForFBStyle::testDedentClosingBracketWithComments yapftests/reformatter_test.py::TestsForFBStyle::testDedentIfConditional yapftests/reformatter_test.py::TestsForFBStyle::testDedentImportAsNames yapftests/reformatter_test.py::TestsForFBStyle::testDedentSet yapftests/reformatter_test.py::TestsForFBStyle::testDedentTestListGexp yapftests/reformatter_test.py::TestsForFBStyle::testDedentingCallsWithInnerLists yapftests/reformatter_test.py::TestsForFBStyle::testDedentingInnerScope yapftests/reformatter_test.py::TestsForFBStyle::testDedentingListComprehension yapftests/reformatter_test.py::TestsForFBStyle::testDedentingWithSubscripts yapftests/reformatter_test.py::TestsForFBStyle::testIfExprHangingIndent yapftests/reformatter_test.py::TestsForFBStyle::testMustSplitDedenting yapftests/reformatter_test.py::TestsForFBStyle::testNoNeedForLineBreaks yapftests/reformatter_test.py::TestsForFBStyle::testSimpleDedenting
yapf/__init__.py yapf/yapflib/split_penalty.py CHANGELOG
yapf/__init__.py yapf/yapflib/split_penalty.py CHANGELOG