]> 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:

Properle space complex expressions in default values of typed arguments
authorŁukasz Langa <lukasz@langa.pl>
Fri, 23 Mar 2018 06:52:21 +0000 (23:52 -0700)
committerŁukasz Langa <lukasz@langa.pl>
Fri, 23 Mar 2018 06:52:21 +0000 (23:52 -0700)
Fixes #60

README.md
black.py
tests/function.py

index 35582545e2c6fe53cc4e2ca5f95cafd3ee1fac91..014780bd1af7fad5a0c437b11504ca6435780b81 100644 (file)
--- a/README.md
+++ b/README.md
@@ -311,6 +311,9 @@ More details can be found in [CONTRIBUTING](CONTRIBUTING.md).
 * automatic detection of deprecated Python 2 forms of print statements
   and exec statements in the formatted file (#49)
 
+* use proper spaces for complex expressions in default values of typed
+  function arguments (#60)
+
 * only return exit code 1 when --check is used (#50)
 
 * don't remove single trailing commas from square bracket indexing
index e39cf7d7fbbf3c3631603fd7e27267ea9cf3ad59..7ca6bc6eaa47e91b1f55cf54832c4a950671c1b4 100644 (file)
--- a/black.py
+++ b/black.py
@@ -419,7 +419,7 @@ class BracketTracker:
         """Returns True if there is an yet unmatched open bracket on the line."""
         return bool(self.bracket_match)
 
-    def max_priority(self, exclude: Iterable[LeafID] =()) -> int:
+    def max_priority(self, exclude: Iterable[LeafID] = ()) -> int:
         """Returns the highest priority of a delimiter found on the line.
 
         Values are consistent with what `is_delimiter()` returns.
@@ -885,14 +885,17 @@ def whitespace(leaf: Leaf) -> str:  # noqa C901
             return SPACE if prevp.type == token.COMMA else NO
 
         if prevp.type == token.EQUAL:
-            if prevp.parent and prevp.parent.type in {
-                syms.arglist,
-                syms.argument,
-                syms.parameters,
-                syms.typedargslist,
-                syms.varargslist,
-            }:
-                return NO
+            if prevp.parent:
+                if prevp.parent.type in {
+                    syms.arglist, syms.argument, syms.parameters, syms.varargslist
+                }:
+                    return NO
+
+                elif prevp.parent.type == syms.typedargslist:
+                    # A bit hacky: if the equal sign has whitespace, it means we
+                    # previously found it's a typed argument.  So, we're using
+                    # that, too.
+                    return prevp.prefix
 
         elif prevp.type == token.DOUBLESTAR:
             if prevp.parent and prevp.parent.type in {
@@ -938,7 +941,7 @@ def whitespace(leaf: Leaf) -> str:  # noqa C901
         if not prev or prev.type != token.COMMA:
             return NO
 
-    if p.type == syms.varargslist:
+    elif p.type == syms.varargslist:
         # lambdas
         if t == token.RPAR:
             return NO
index 888ef9fc5096b680ba0b18dd5632ded669bf3fae..08ab2b80a576f52a04fa6c9847bdfc90f6429e75 100644 (file)
@@ -31,6 +31,7 @@ def function_signature_stress_test(number:int,no_annotation=None,text:str="defau
 def spaces(a=1, b=(), c=[], d={}, e=True, f=-1, g=1 if False else 2, h="", i=r''):
  offset = attr.ib(default=attr.Factory( lambda: _r.uniform(10000, 200000)))
  assert task._cancel_stack[:len(old_stack)] == old_stack
+def spaces_types(a: int = 1, b: tuple = (), c: list = [], d: dict = {}, e: bool = True, f: int = -1, g: int = 1 if False else 2, h: str = "", i: str = r''): ...
 def spaces2(result= _core.Value(None)):
  ...
 def example(session):
@@ -123,6 +124,20 @@ def spaces(a=1, b=(), c=[], d={}, e=True, f=-1, g=1 if False else 2, h="", i=r''
     assert task._cancel_stack[:len(old_stack)] == old_stack
 
 
+def spaces_types(
+    a: int = 1,
+    b: tuple = (),
+    c: list = [],
+    d: dict = {},
+    e: bool = True,
+    f: int = -1,
+    g: int = 1 if False else 2,
+    h: str = "",
+    i: str = r'',
+):
+    ...
+
+
 def spaces2(result=_core.Value(None)):
     ...