]> git.madduck.net Git - etc/vim.git/commitdiff

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Don't explode a one-element collection ending with a comma.
authorŁukasz Langa <lukasz@langa.pl>
Thu, 17 May 2018 22:07:40 +0000 (15:07 -0700)
committerŁukasz Langa <lukasz@langa.pl>
Fri, 18 May 2018 00:32:43 +0000 (17:32 -0700)
README.md
black.py
tests/composition.py

index f58774428d03e8c287f483500ddefdaef4c15e64..c56f454baad3b098bfd995310a49abcdf317b5f4 100644 (file)
--- a/README.md
+++ b/README.md
@@ -178,9 +178,9 @@ example above).
 
 If a data structure literal (tuple, list, set, dict) or a line of "from"
 imports cannot fit in the allotted length, it's always split into one
-per line.  This minimizes diffs as well as enables readers of code to
-find which commit introduced a particular entry.  This also makes
-*Black* compatible with [isort](https://pypi.org/p/isort/).  Use
+element per line.  This minimizes diffs as well as enables readers of
+code to find which commit introduced a particular entry.  This also
+makes *Black* compatible with [isort](https://pypi.org/p/isort/).  Use
 `multi_line_output=3`, `include_trailing_comma=True`,
 `force_grid_wrap=0`, and `line_length=88` in your isort config.
 
index 228deb75b5eef27079f112063a696fcb49d68f8c..6dda93b45c38f24024afad1d6a5b3251e559a677 100644 (file)
--- a/black.py
+++ b/black.py
@@ -2532,13 +2532,21 @@ def ensure_visible(leaf: Leaf) -> None:
 
 def should_explode(line: Line, opening_bracket: Leaf) -> bool:
     """Should `line` immediately be split with `delimiter_split()` after RHS?"""
-    return bool(
+    if not (
         opening_bracket.parent
         and opening_bracket.parent.type in {syms.atom, syms.import_from}
         and opening_bracket.value in "[{("
-        and line.bracket_tracker.delimiters
-        and line.bracket_tracker.max_delimiter_priority() == COMMA_PRIORITY
-    )
+    ):
+        return False
+
+    try:
+        last_leaf = line.leaves[-1]
+        exclude = {id(last_leaf)} if last_leaf.type == token.COMMA else set()
+        max_priority = line.bracket_tracker.max_delimiter_priority(exclude=exclude)
+    except (IndexError, ValueError):
+        return False
+
+    return max_priority == COMMA_PRIORITY
 
 
 def is_python36(node: Node) -> bool:
index 542cff6bfac27d3007d3182a0de6b28c49066cbb..71eee6a86cd3edcbe599e109e741233dc8d86786 100644 (file)
@@ -147,7 +147,18 @@ class C:
             "in one line because it's too long"
         )
 
-        # This is weird but true.
+        dis_c_instance_method = """\
+        %3d           0 LOAD_FAST                1 (x)
+                      2 LOAD_CONST               1 (1)
+                      4 COMPARE_OP               2 (==)
+                      6 LOAD_FAST                0 (self)
+                      8 STORE_ATTR               0 (x)
+                     10 LOAD_CONST               0 (None)
+                     12 RETURN_VALUE
+        """ % (
+            _C.__init__.__code__.co_firstlineno + 1,
+        )
+
         assert (
             expectedexpectedexpectedexpectedexpectedexpectedexpectedexpectedexpect
             == {