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

Treat blank lines in stubs the same inside top-level `if` statements (#2820)
authorShantanu <12621235+hauntsaninja@users.noreply.github.com>
Sat, 29 Jan 2022 00:29:07 +0000 (16:29 -0800)
committerGitHub <noreply@github.com>
Sat, 29 Jan 2022 00:29:07 +0000 (16:29 -0800)
CHANGES.md
src/black/lines.py
tests/data/stub.pyi

index 440aaeaa35a6245c89aecad0c9a3759d9d3536fa..274c5640ec018adb937502cea2e184dd38337f1d 100644 (file)
@@ -23,6 +23,7 @@ and the first release covered by our new stability policy.
 - Use parentheses for attribute access on decimal float and int literals (#2799)
 - Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex
   literals (#2799)
 - Use parentheses for attribute access on decimal float and int literals (#2799)
 - Don't add whitespace for attribute access on hexadecimal, binary, octal, and complex
   literals (#2799)
+- Treat blank lines in stubs the same inside top-level `if` statements (#2820)
 
 ### Parser
 
 
 ### Parser
 
index 7d50f02aebc16b1787239dcf3f41625464b29dc5..1c4e38a96c14bdcbf4d8d74f79121d677987a41e 100644 (file)
@@ -530,11 +530,11 @@ class EmptyLineTracker:
             return 0, 0
 
         if self.is_pyi:
             return 0, 0
 
         if self.is_pyi:
-            if self.previous_line.depth > current_line.depth:
-                newlines = 0 if current_line.depth else 1
-            elif current_line.is_class or self.previous_line.is_class:
-                if current_line.depth:
+            if current_line.is_class or self.previous_line.is_class:
+                if self.previous_line.depth < current_line.depth:
                     newlines = 0
                     newlines = 0
+                elif self.previous_line.depth > current_line.depth:
+                    newlines = 1
                 elif current_line.is_stub_class and self.previous_line.is_stub_class:
                     # No blank line between classes with an empty body
                     newlines = 0
                 elif current_line.is_stub_class and self.previous_line.is_stub_class:
                     # No blank line between classes with an empty body
                     newlines = 0
@@ -551,6 +551,8 @@ class EmptyLineTracker:
                     # Blank line between a block of functions (maybe with preceding
                     # decorators) and a block of non-functions
                     newlines = 1
                     # Blank line between a block of functions (maybe with preceding
                     # decorators) and a block of non-functions
                     newlines = 1
+            elif self.previous_line.depth > current_line.depth:
+                newlines = 1
             else:
                 newlines = 0
         else:
             else:
                 newlines = 0
         else:
index 9a246211284acac31eb3c1e3575ee7083db44fe7..af2cd2c2c026e64e4f254954baf0cf7baad614e1 100644 (file)
@@ -32,6 +32,48 @@ def g():
 
 def h(): ...
 
 
 def h(): ...
 
+if sys.version_info >= (3, 8):
+    class E:
+        def f(self): ...
+    class F:
+
+        def f(self): ...
+    class G: ...
+    class H: ...
+else:
+    class I: ...
+    class J: ...
+    def f(): ...
+
+    class K:
+        def f(self): ...
+    def f(): ...
+
+class Nested:
+    class dirty: ...
+    class little: ...
+    class secret:
+        def who_has_to_know(self): ...
+    def verse(self): ...
+
+class Conditional:
+    def f(self): ...
+    if sys.version_info >= (3, 8):
+        def g(self): ...
+    else:
+        def g(self): ...
+    def h(self): ...
+    def i(self): ...
+    if sys.version_info >= (3, 8):
+        def j(self): ...
+    def k(self): ...
+    if sys.version_info >= (3, 8):
+        class A: ...
+        class B: ...
+        class C:
+            def l(self): ...
+            def m(self): ...
+
 
 # output
 X: int
 
 # output
 X: int
@@ -56,3 +98,54 @@ class A:
 
 def g(): ...
 def h(): ...
 
 def g(): ...
 def h(): ...
+
+if sys.version_info >= (3, 8):
+    class E:
+        def f(self): ...
+
+    class F:
+        def f(self): ...
+
+    class G: ...
+    class H: ...
+
+else:
+    class I: ...
+    class J: ...
+
+    def f(): ...
+
+    class K:
+        def f(self): ...
+
+    def f(): ...
+
+class Nested:
+    class dirty: ...
+    class little: ...
+
+    class secret:
+        def who_has_to_know(self): ...
+
+    def verse(self): ...
+
+class Conditional:
+    def f(self): ...
+    if sys.version_info >= (3, 8):
+        def g(self): ...
+    else:
+        def g(self): ...
+
+    def h(self): ...
+    def i(self): ...
+    if sys.version_info >= (3, 8):
+        def j(self): ...
+
+    def k(self): ...
+    if sys.version_info >= (3, 8):
+        class A: ...
+        class B: ...
+
+        class C:
+            def l(self): ...
+            def m(self): ...