mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-10-31 20:08:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			797 lines
		
	
	
	
		
			7.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			797 lines
		
	
	
	
		
			7.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| ---
 | |
| source: crates/ruff_python_formatter/tests/fixtures.rs
 | |
| input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/newlines.py
 | |
| snapshot_kind: text
 | |
| ---
 | |
| ## Input
 | |
| ```python
 | |
| ###
 | |
| # Blank lines around functions
 | |
| ###
 | |
| import sys
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| # comment
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| if True:
 | |
|     x = 1
 | |
| 
 | |
| # comment
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| 
 | |
| # comment
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| # comment
 | |
| 
 | |
| # comment
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| # comment
 | |
| # comment
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| # comment
 | |
| # comment
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| # comment
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| ###
 | |
| # Blank lines around imports.
 | |
| ###
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
|     # comment
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
| 
 | |
|     # comment
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
|     # comment
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
|     # comment
 | |
| 
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
| 
 | |
| 
 | |
|     # comment
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
| 
 | |
|     # comment
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x  # comment
 | |
|     # comment
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f(): pass  # comment
 | |
| # comment
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
|     print("below function")
 | |
|     if True:
 | |
| 
 | |
|         class A:
 | |
|             x = 1
 | |
|     print("below class")
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
|         #
 | |
|     print("below comment function")
 | |
|     if True:
 | |
| 
 | |
|         class A:
 | |
|             x = 1
 | |
|         #
 | |
|     print("below comment class")
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
|     #
 | |
|     print("below comment function 2")
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
|             #
 | |
|     def outer():
 | |
|         def inner():
 | |
|             pass
 | |
|     print("below nested functions")
 | |
| 
 | |
| if True:
 | |
| 
 | |
|     def double(s):
 | |
|         return s + s
 | |
| print("below function")
 | |
| if True:
 | |
| 
 | |
|     class A:
 | |
|         x = 1
 | |
| print("below class")
 | |
| def outer():
 | |
|     def inner():
 | |
|         pass
 | |
| print("below nested functions")
 | |
| 
 | |
| 
 | |
| class Path:
 | |
|     if sys.version_info >= (3, 11):
 | |
|         def joinpath(self): ...
 | |
| 
 | |
|     # The .open method comes from pathlib.pyi and should be kept in sync.
 | |
|     @overload
 | |
|     def open(self): ...
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| def fakehttp():
 | |
| 
 | |
|     class FakeHTTPConnection:
 | |
|         if mock_close:
 | |
|             def close(self):
 | |
|                 pass
 | |
|     FakeHTTPConnection.fakedata = fakedata
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| if True:
 | |
|     if False:
 | |
|         def x():
 | |
|             def y():
 | |
|                 pass
 | |
|         #comment
 | |
|     print()
 | |
| 
 | |
| 
 | |
| if True:
 | |
|     def a():
 | |
|         return 1
 | |
| else:
 | |
|     pass
 | |
| 
 | |
| if True:
 | |
|     # fmt: off
 | |
|     def a():
 | |
|         return 1
 | |
|     # fmt: on
 | |
| else:
 | |
|     pass
 | |
| 
 | |
| match True:
 | |
|     case 1:
 | |
|         def a():
 | |
|             return 1
 | |
|     case 1:
 | |
|         def a():
 | |
|             return 1
 | |
| 
 | |
| try:
 | |
|     def a():
 | |
|         return 1
 | |
| except RuntimeError:
 | |
|     def a():
 | |
|         return 1
 | |
| 
 | |
| try:
 | |
|     def a():
 | |
|         return 1
 | |
| finally:
 | |
|     def a():
 | |
|         return 1
 | |
| 
 | |
| try:
 | |
|     def a():
 | |
|         return 1
 | |
| except RuntimeError:
 | |
|     def a():
 | |
|         return 1
 | |
| except ZeroDivisionError:
 | |
|     def a():
 | |
|         return 1
 | |
| else:
 | |
|     def a():
 | |
|         return 1
 | |
| finally:
 | |
|     def a():
 | |
|         return 1
 | |
| 
 | |
| if raw:
 | |
|     def show_file(lines):
 | |
|         for line in lines:
 | |
|             pass
 | |
|             # Trailing comment not on function or class
 | |
| 
 | |
| else:
 | |
|     pass
 | |
| 
 | |
| 
 | |
| # NOTE: Please keep this the last block in this file. This tests that we don't insert
 | |
| # empty line(s) at the end of the file due to nested function
 | |
| if True:
 | |
|     def nested_trailing_function():
 | |
|         pass
 | |
| 
 | |
| 
 | |
| def overload1(): ...  # trailing comment
 | |
| def overload1(a: int): ...
 | |
| 
 | |
| def overload2(): ...  # trailing comment
 | |
| 
 | |
| def overload2(a: int): ...
 | |
| 
 | |
| def overload3():
 | |
|     ...
 | |
|     # trailing comment
 | |
| def overload3(a: int): ...
 | |
| 
 | |
| def overload4():
 | |
|     ...
 | |
|     # trailing comment
 | |
| 
 | |
| def overload4(a: int): ...
 | |
| ```
 | |
| 
 | |
| ## Output
 | |
| ```python
 | |
| ###
 | |
| # Blank lines around functions
 | |
| ###
 | |
| import sys
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| if True:
 | |
|     x = 1
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| # comment
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| # comment
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| # comment
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| # comment
 | |
| # comment
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| ###
 | |
| # Blank lines around imports.
 | |
| ###
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
| 
 | |
|     # comment
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
| 
 | |
|     # comment
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
|     # comment
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
|     # comment
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
| 
 | |
|     # comment
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x
 | |
| 
 | |
|     # comment
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     import x  # comment
 | |
|     # comment
 | |
| 
 | |
|     import y
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass  # comment
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     pass
 | |
| 
 | |
| 
 | |
| # comment
 | |
| 
 | |
| x = 1
 | |
| 
 | |
| 
 | |
| def f():
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
| 
 | |
|     print("below function")
 | |
|     if True:
 | |
| 
 | |
|         class A:
 | |
|             x = 1
 | |
| 
 | |
|     print("below class")
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
| 
 | |
|         #
 | |
|     print("below comment function")
 | |
|     if True:
 | |
| 
 | |
|         class A:
 | |
|             x = 1
 | |
| 
 | |
|         #
 | |
|     print("below comment class")
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
| 
 | |
|     #
 | |
|     print("below comment function 2")
 | |
|     if True:
 | |
| 
 | |
|         def double(s):
 | |
|             return s + s
 | |
|             #
 | |
| 
 | |
|     def outer():
 | |
|         def inner():
 | |
|             pass
 | |
| 
 | |
|     print("below nested functions")
 | |
| 
 | |
| 
 | |
| if True:
 | |
| 
 | |
|     def double(s):
 | |
|         return s + s
 | |
| 
 | |
| 
 | |
| print("below function")
 | |
| if True:
 | |
| 
 | |
|     class A:
 | |
|         x = 1
 | |
| 
 | |
| 
 | |
| print("below class")
 | |
| 
 | |
| 
 | |
| def outer():
 | |
|     def inner():
 | |
|         pass
 | |
| 
 | |
| 
 | |
| print("below nested functions")
 | |
| 
 | |
| 
 | |
| class Path:
 | |
|     if sys.version_info >= (3, 11):
 | |
| 
 | |
|         def joinpath(self): ...
 | |
| 
 | |
|     # The .open method comes from pathlib.pyi and should be kept in sync.
 | |
|     @overload
 | |
|     def open(self): ...
 | |
| 
 | |
| 
 | |
| def fakehttp():
 | |
|     class FakeHTTPConnection:
 | |
|         if mock_close:
 | |
| 
 | |
|             def close(self):
 | |
|                 pass
 | |
| 
 | |
|     FakeHTTPConnection.fakedata = fakedata
 | |
| 
 | |
| 
 | |
| if True:
 | |
|     if False:
 | |
| 
 | |
|         def x():
 | |
|             def y():
 | |
|                 pass
 | |
| 
 | |
|         # comment
 | |
|     print()
 | |
| 
 | |
| 
 | |
| if True:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| else:
 | |
|     pass
 | |
| 
 | |
| if True:
 | |
|     # fmt: off
 | |
|     def a():
 | |
|         return 1
 | |
|     # fmt: on
 | |
| else:
 | |
|     pass
 | |
| 
 | |
| match True:
 | |
|     case 1:
 | |
| 
 | |
|         def a():
 | |
|             return 1
 | |
|     case 1:
 | |
| 
 | |
|         def a():
 | |
|             return 1
 | |
| 
 | |
| 
 | |
| try:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| except RuntimeError:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| 
 | |
| 
 | |
| try:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| finally:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| 
 | |
| 
 | |
| try:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| except RuntimeError:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| except ZeroDivisionError:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| else:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| finally:
 | |
| 
 | |
|     def a():
 | |
|         return 1
 | |
| 
 | |
| 
 | |
| if raw:
 | |
| 
 | |
|     def show_file(lines):
 | |
|         for line in lines:
 | |
|             pass
 | |
|             # Trailing comment not on function or class
 | |
| 
 | |
| else:
 | |
|     pass
 | |
| 
 | |
| 
 | |
| # NOTE: Please keep this the last block in this file. This tests that we don't insert
 | |
| # empty line(s) at the end of the file due to nested function
 | |
| if True:
 | |
| 
 | |
|     def nested_trailing_function():
 | |
|         pass
 | |
| 
 | |
| 
 | |
| def overload1(): ...  # trailing comment
 | |
| def overload1(a: int): ...
 | |
| 
 | |
| 
 | |
| def overload2(): ...  # trailing comment
 | |
| 
 | |
| 
 | |
| def overload2(a: int): ...
 | |
| 
 | |
| 
 | |
| def overload3():
 | |
|     ...
 | |
|     # trailing comment
 | |
| 
 | |
| 
 | |
| def overload3(a: int): ...
 | |
| 
 | |
| 
 | |
| def overload4():
 | |
|     ...
 | |
|     # trailing comment
 | |
| 
 | |
| 
 | |
| def overload4(a: int): ...
 | |
| ```
 | |
| 
 | |
| 
 | |
| ## Preview changes
 | |
| ```diff
 | |
| --- Stable
 | |
| +++ Preview
 | |
| @@ -277,6 +277,7 @@
 | |
|  
 | |
|      def a():
 | |
|          return 1
 | |
| +
 | |
|  else:
 | |
|      pass
 | |
|  
 | |
| @@ -293,6 +294,7 @@
 | |
|  
 | |
|          def a():
 | |
|              return 1
 | |
| +
 | |
|      case 1:
 | |
|  
 | |
|          def a():
 | |
| @@ -303,6 +305,7 @@
 | |
|  
 | |
|      def a():
 | |
|          return 1
 | |
| +
 | |
|  except RuntimeError:
 | |
|  
 | |
|      def a():
 | |
| @@ -313,6 +316,7 @@
 | |
|  
 | |
|      def a():
 | |
|          return 1
 | |
| +
 | |
|  finally:
 | |
|  
 | |
|      def a():
 | |
| @@ -323,18 +327,22 @@
 | |
|  
 | |
|      def a():
 | |
|          return 1
 | |
| +
 | |
|  except RuntimeError:
 | |
|  
 | |
|      def a():
 | |
|          return 1
 | |
| +
 | |
|  except ZeroDivisionError:
 | |
|  
 | |
|      def a():
 | |
|          return 1
 | |
| +
 | |
|  else:
 | |
|  
 | |
|      def a():
 | |
|          return 1
 | |
| +
 | |
|  finally:
 | |
|  
 | |
|      def a():
 | |
| ```
 | 
