diff --git a/CHANGELOG b/CHANGELOG
index d7a465c..b05a6f4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -13,6 +13,7 @@
 - Corrected how `DEDENT_CLOSING_BRACKETS` and `COALESCE_BRACKETS` interacted.
 - Fix return value to return a boolean.
 - Correct vim plugin not to clobber edited code if yapf returns an error.
+- Ensured comma-terminated tuples with multiple elements are split onto separate lines.
 
 ## [0.16.3] 2017-07-13
 ### Changed
diff --git a/yapf/yapflib/pytree_unwrapper.py b/yapf/yapflib/pytree_unwrapper.py
index c67c1c6..8dbbfe0 100644
--- a/yapf/yapflib/pytree_unwrapper.py
+++ b/yapf/yapflib/pytree_unwrapper.py
@@ -258,8 +258,7 @@ class PyTreeUnwrapper(pytree_visitor.PyTreeVisitor):
     self.DefaultNodeVisit(node)
 
   def Visit_testlist_gexp(self, node):  # pylint: disable=invalid-name
-    if _ContainsComments(node):
-      _DetermineMustSplitAnnotation(node)
+    _DetermineMustSplitAnnotation(node)
     self.DefaultNodeVisit(node)
 
   def Visit_arglist(self, node):  # pylint: disable=invalid-name
@@ -336,6 +335,11 @@ def _AdjustSplitPenalty(uwline):
 def _DetermineMustSplitAnnotation(node):
   """Enforce a split in the list if the list ends with a comma."""
   if not _ContainsComments(node):
+    token = next(node.parent.leaves())
+    if token.value == '(':
+      if sum(1 for ch in node.children
+             if pytree_utils.NodeName(ch) == 'COMMA') < 2:
+        return
     if (not isinstance(node.children[-1], pytree.Leaf) or
         node.children[-1].value != ','):
       return

diff --git a/yapftests/reformatter_basic_test.py b/yapftests/reformatter_basic_test.py
index 0ce8da8..c205f47 100644
--- a/yapftests/reformatter_basic_test.py
+++ b/yapftests/reformatter_basic_test.py
@@ -459,10 +459,17 @@ class BasicReformatterTest(yapf_test_helper.YAPFTest):
 
   def testOpeningAndClosingBrackets(self):
     unformatted_code = textwrap.dedent("""\
+        foo( (1, ) )
+        foo( ( 1, 2, 3  ) )
         foo( ( 1, 2, 3, ) )
         """)
     expected_formatted_code = textwrap.dedent("""\
-        foo((1, 2, 3,))
+        foo((1,))
+        foo((1, 2, 3))
+        foo((
+            1,
+            2,
+            3,))
         """)
     uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
     self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
diff --git a/yapftests/reformatter_facebook_test.py b/yapftests/reformatter_facebook_test.py
index 4706786..953d290 100644
--- a/yapftests/reformatter_facebook_test.py
+++ b/yapftests/reformatter_facebook_test.py
@@ -107,7 +107,7 @@ v, w, x, y, z
     self.assertCodeEqual(code, reformatter.Reformat(uwlines))
 
   def testDedentTestListGexp(self):
-    code = textwrap.dedent("""\
+    unformatted_code = textwrap.dedent("""\
         try:
             pass
         except (
@@ -122,8 +122,27 @@ v, w, x, y, z
         ) as exception:
             pass
         """)
-    uwlines = yapf_test_helper.ParseAndUnwrap(code)
-    self.assertCodeEqual(code, reformatter.Reformat(uwlines))
+    expected_formatted_code = textwrap.dedent("""\
+        try:
+            pass
+        except (
+            IOError, OSError, LookupError, RuntimeError, OverflowError
+        ) as exception:
+            pass
+
+        try:
+            pass
+        except (
+            IOError,
+            OSError,
+            LookupError,
+            RuntimeError,
+            OverflowError,
+        ) as exception:
+            pass
+        """)
+    uwlines = yapf_test_helper.ParseAndUnwrap(unformatted_code)
+    self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
 
   def testBrokenIdempotency(self):
     # TODO(ambv): The following behaviour should be fixed.

How to prevent YAPF from joining lines in dictionaries and lists?
YAPF converts
```
DJANGO_TEMPLATES_OPTIONS = {
  "context_processors": []
}
```
to
```
DJANGO_TEMPLATES_OPTIONS = {"context_processors": []}
```
and I cannot find the option to disable such behavior.

Is it possible?
yapftests/reformatter_basic_test.py::BasicReformatterTest::testOpeningAndClosingBrackets yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentTestListGexp
yapftests/reformatter_basic_test.py::BasicReformatterTest::testArgsAndKwargsFormatting yapftests/reformatter_basic_test.py::BasicReformatterTest::testBinaryOperators yapftests/reformatter_basic_test.py::BasicReformatterTest::testBlankLineBeforeClassDocstring yapftests/reformatter_basic_test.py::BasicReformatterTest::testBlankLinesAtEndOfFile yapftests/reformatter_basic_test.py::BasicReformatterTest::testBlankLinesBeforeDecorators yapftests/reformatter_basic_test.py::BasicReformatterTest::testBlankLinesBeforeFunctionsNotInColumnZero yapftests/reformatter_basic_test.py::BasicReformatterTest::testClosingBracketIndent yapftests/reformatter_basic_test.py::BasicReformatterTest::testClosingBracketsInlinedInCall yapftests/reformatter_basic_test.py::BasicReformatterTest::testCoalesceBracketsOnDict yapftests/reformatter_basic_test.py::BasicReformatterTest::testCommentBeforeFuncDef yapftests/reformatter_basic_test.py::BasicReformatterTest::testCommentBetweenDecorators yapftests/reformatter_basic_test.py::BasicReformatterTest::testCommentColumnLimitOverflow yapftests/reformatter_basic_test.py::BasicReformatterTest::testComments yapftests/reformatter_basic_test.py::BasicReformatterTest::testCommentsInDataLiteral yapftests/reformatter_basic_test.py::BasicReformatterTest::testCommentsWithContinuationMarkers yapftests/reformatter_basic_test.py::BasicReformatterTest::testCommentsWithTrailingSpaces yapftests/reformatter_basic_test.py::BasicReformatterTest::testComprehensionForAndIf yapftests/reformatter_basic_test.py::BasicReformatterTest::testContiguousList yapftests/reformatter_basic_test.py::BasicReformatterTest::testContinuationIndent yapftests/reformatter_basic_test.py::BasicReformatterTest::testContinuationMarkers yapftests/reformatter_basic_test.py::BasicReformatterTest::testContinuationSpaceRetention yapftests/reformatter_basic_test.py::BasicReformatterTest::testDictSetGenerator yapftests/reformatter_basic_test.py::BasicReformatterTest::testDictionaryElementsOnOneLine yapftests/reformatter_basic_test.py::BasicReformatterTest::testDictionaryMakerFormatting yapftests/reformatter_basic_test.py::BasicReformatterTest::testDictionaryOnOwnLine yapftests/reformatter_basic_test.py::BasicReformatterTest::testDictionaryValuesOnOwnLines yapftests/reformatter_basic_test.py::BasicReformatterTest::testDocstringAndMultilineComment yapftests/reformatter_basic_test.py::BasicReformatterTest::testDocstrings yapftests/reformatter_basic_test.py::BasicReformatterTest::testDontAddBlankLineAfterMultilineString yapftests/reformatter_basic_test.py::BasicReformatterTest::testDontSplitKeywordValueArguments yapftests/reformatter_basic_test.py::BasicReformatterTest::testEllipses yapftests/reformatter_basic_test.py::BasicReformatterTest::testEmptyContainers yapftests/reformatter_basic_test.py::BasicReformatterTest::testEndingComment yapftests/reformatter_basic_test.py::BasicReformatterTest::testEndingWhitespaceAfterSimpleStatement yapftests/reformatter_basic_test.py::BasicReformatterTest::testExcessCharacters yapftests/reformatter_basic_test.py::BasicReformatterTest::testExcessLineCountWithDefaultKeywords yapftests/reformatter_basic_test.py::BasicReformatterTest::testExpressionPenalties yapftests/reformatter_basic_test.py::BasicReformatterTest::testFormattingListComprehensions yapftests/reformatter_basic_test.py::BasicReformatterTest::testFunctionCallArguments yapftests/reformatter_basic_test.py::BasicReformatterTest::testFunctionCallContinuationLine yapftests/reformatter_basic_test.py::BasicReformatterTest::testFunctionCallInDict yapftests/reformatter_basic_test.py::BasicReformatterTest::testFunctionCallInNestedDict yapftests/reformatter_basic_test.py::BasicReformatterTest::testI18n yapftests/reformatter_basic_test.py::BasicReformatterTest::testI18nCommentsInDataLiteral yapftests/reformatter_basic_test.py::BasicReformatterTest::testI18nNonFormatting yapftests/reformatter_basic_test.py::BasicReformatterTest::testIfConditionalParens yapftests/reformatter_basic_test.py::BasicReformatterTest::testIfExpressionWithFunctionCall yapftests/reformatter_basic_test.py::BasicReformatterTest::testImportAsList yapftests/reformatter_basic_test.py::BasicReformatterTest::testLineDepthOfSingleLineStatement yapftests/reformatter_basic_test.py::BasicReformatterTest::testLineWrapInForExpression yapftests/reformatter_basic_test.py::BasicReformatterTest::testListComprehension yapftests/reformatter_basic_test.py::BasicReformatterTest::testListWithFunctionCalls yapftests/reformatter_basic_test.py::BasicReformatterTest::testMatchingParenSplittingMatching yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultilineComment yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultilineCommentReformatted yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultilineDictionaryKeys yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultilineDocstringAndMultilineComment yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultilineLambdas yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultilineShebang yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultilineString yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultipleContinuationMarkers yapftests/reformatter_basic_test.py::BasicReformatterTest::testMultipleUgliness yapftests/reformatter_basic_test.py::BasicReformatterTest::testNamedAssignNotAtEndOfLine yapftests/reformatter_basic_test.py::BasicReformatterTest::testNestedDictionary yapftests/reformatter_basic_test.py::BasicReformatterTest::testNestedListsInDictionary yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoBreakOutsideOfBracket yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoKeywordArgumentBreakage yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoPenaltySplitting yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoQueueSeletionInMiddleOfLine yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSpaceBetweenUnaryOpAndOpeningParen yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSpacesAroundKeywordDefaultValues yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSpacesBetweenOpeningBracketAndStartingOperator yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSpacesBetweenSubscriptsAndCalls yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSplittingAroundTermOperators yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSplittingBeforeEndingSubscriptBracket yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSplittingOnSingleArgument yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSplittingWhenBinPacking yapftests/reformatter_basic_test.py::BasicReformatterTest::testNoSplittingWithinSubscriptList yapftests/reformatter_basic_test.py::BasicReformatterTest::testNotInParams yapftests/reformatter_basic_test.py::BasicReformatterTest::testNotSplittingAfterSubscript yapftests/reformatter_basic_test.py::BasicReformatterTest::testOverColumnLimit yapftests/reformatter_basic_test.py::BasicReformatterTest::testRelativeImportStatements yapftests/reformatter_basic_test.py::BasicReformatterTest::testRelaxArraySubscriptAffinity yapftests/reformatter_basic_test.py::BasicReformatterTest::testSimple yapftests/reformatter_basic_test.py::BasicReformatterTest::testSimpleFunctions yapftests/reformatter_basic_test.py::BasicReformatterTest::testSimpleFunctionsWithTrailingComments yapftests/reformatter_basic_test.py::BasicReformatterTest::testSimpleMultilineCode yapftests/reformatter_basic_test.py::BasicReformatterTest::testSimpleMultilineWithComments yapftests/reformatter_basic_test.py::BasicReformatterTest::testSingleComment yapftests/reformatter_basic_test.py::BasicReformatterTest::testSingleLineFunctions yapftests/reformatter_basic_test.py::BasicReformatterTest::testSingleLineList yapftests/reformatter_basic_test.py::BasicReformatterTest::testSpaceAfterNotOperator yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplitAfterComment yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplitListWithComment yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplitListWithInterspersedComments yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplitListWithTerminatingComma yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplitStringsIfSurroundedByParens yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplittingArgumentsTerminatedByComma yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplittingArraysSensibly yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplittingBeforeFirstArgumentOnCompoundStatement yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplittingBeforeFirstArgumentOnFunctionCall yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplittingBeforeFirstArgumentOnFunctionDefinition yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplittingBeforeFirstElementListArgument yapftests/reformatter_basic_test.py::BasicReformatterTest::testSplittingOneArgumentList yapftests/reformatter_basic_test.py::BasicReformatterTest::testStableDictionaryFormatting yapftests/reformatter_basic_test.py::BasicReformatterTest::testStableInlinedDictionaryFormatting yapftests/reformatter_basic_test.py::BasicReformatterTest::testSubscriptExpression yapftests/reformatter_basic_test.py::BasicReformatterTest::testTrailerOnSingleLine yapftests/reformatter_basic_test.py::BasicReformatterTest::testTrailingCommaAndBracket yapftests/reformatter_basic_test.py::BasicReformatterTest::testTupleCohesion yapftests/reformatter_basic_test.py::BasicReformatterTest::testTupleCommaBeforeLastParen yapftests/reformatter_basic_test.py::BasicReformatterTest::testUnaryNotOperator yapftests/reformatter_basic_test.py::BasicReformatterTest::testUnaryOpInDictionaryValue yapftests/reformatter_basic_test.py::BasicReformatterTest::testUnbreakableNot yapftests/reformatter_basic_test.py::BasicReformatterTest::testUnformattedAfterMultilineString yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testBreakAfterOpeningBracketIfContentsTooBig yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testBrokenIdempotency yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testCommentWithNewlinesInPrefix yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentClosingBracket yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentClosingBracketWithComments yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentIfConditional yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentImportAsNames yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentSet yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentingCallsWithInnerLists yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentingInnerScope yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentingListComprehension yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testDedentingWithSubscripts yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testIfExprHangingIndent yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testMustSplitDedenting yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testNoNeedForLineBreaks yapftests/reformatter_facebook_test.py::TestsForFacebookStyle::testSimpleDedenting