Merge pull request #230 from felixonmars/master

Note explicit support for Python 3.5
diff --git a/yapf/yapflib/split_penalty.py b/yapf/yapflib/split_penalty.py
index 2c770f8..a4e9b9b 100644
--- a/yapf/yapflib/split_penalty.py
+++ b/yapf/yapflib/split_penalty.py
@@ -23,6 +23,7 @@
 # TODO(morbo): Document the annotations in a centralized place. E.g., the
 # README file.
 UNBREAKABLE = 1000 * 1000
+DOTTED_NAME = 2500
 STRONGLY_CONNECTED = 2000
 CONTIGUOUS_LIST = 500
 
@@ -134,6 +135,9 @@
     self.DefaultNodeVisit(node)
     if node.children[0].value == '.':
       self._SetUnbreakableOnChildren(node)
+      pytree_utils.SetNodeAnnotation(
+          node.children[1], pytree_utils.Annotation.SPLIT_PENALTY,
+          DOTTED_NAME)
     elif len(node.children) == 2:
       # Don't split an empty argument list if at all possible.
       self._SetStronglyConnected(node.children[1])
diff --git a/yapftests/reformatter_test.py b/yapftests/reformatter_test.py
index adce679..9eb4422 100644
--- a/yapftests/reformatter_test.py
+++ b/yapftests/reformatter_test.py
@@ -1509,6 +1509,20 @@
   def setUpClass(cls):
     style.SetGlobalStyle(style.CreateChromiumStyle())
 
+  def testB27266946(self):
+    unformatted_code = textwrap.dedent("""\
+        def _():
+          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = (self.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.cccccccccccccccccccccccccccccccccccc)
+        """)
+    expected_formatted_code = textwrap.dedent("""\
+        def _():
+          aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa = (
+              self.bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.
+              cccccccccccccccccccccccccccccccccccc)
+        """)
+    uwlines = _ParseAndUnwrap(unformatted_code)
+    self.assertCodeEqual(expected_formatted_code, reformatter.Reformat(uwlines))
+
   def testB25505359(self):
     code = textwrap.dedent("""\
         _EXAMPLE = {
diff --git a/yapftests/split_penalty_test.py b/yapftests/split_penalty_test.py
index 77d2d81..9e4f382 100644
--- a/yapftests/split_penalty_test.py
+++ b/yapftests/split_penalty_test.py
@@ -24,6 +24,7 @@
 from yapf.yapflib import split_penalty
 
 UNBREAKABLE = split_penalty.UNBREAKABLE
+DOTTED_NAME = split_penalty.DOTTED_NAME
 STRONGLY_CONNECTED = split_penalty.STRONGLY_CONNECTED
 CONTIGUOUS_LIST = split_penalty.CONTIGUOUS_LIST
 
@@ -195,7 +196,7 @@
         ('if', 0),
         ('a', STRONGLY_CONNECTED),
         ('.', UNBREAKABLE),
-        ('x', UNBREAKABLE),
+        ('x', DOTTED_NAME),
         ('==', STRONGLY_CONNECTED),
         ('37', STRONGLY_CONNECTED),
         (']', CONTIGUOUS_LIST),