Allow up to two empty lines after top-level imports (#6777)

## Summary

For imports, we enforce that there's _at least_ one empty line after an
import (assuming the next statement is _not_ an import), but allow up to
two at the module level.

Closes https://github.com/astral-sh/ruff/issues/6760.

## Test Plan

`cargo test`
This commit is contained in:
Charlie Marsh 2023-08-22 12:27:40 -04:00 committed by GitHub
parent 558b56f8a8
commit cc278c24e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 176 additions and 1 deletions

View file

@ -7,6 +7,61 @@ input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/statement/
from a import aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa
from a import aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa, aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa
from a import aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa as dfgsdfgsd, aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa as sdkjflsdjlahlfd
# At the top-level, force one empty line after an import, but allow up to two empty
# lines.
import os
import sys
x = 1
import os
import sys
x = 1
import os
import sys
x = 1
import os
import sys
x = 1
# In a nested scope, force one empty line after an import.
def func():
import os
import sys
x = 1
def func():
import os
import sys
x = 1
def func():
import os
import sys
x = 1
def func():
import os
import sys
x = 1
```
## Output
@ -22,6 +77,59 @@ from a import (
aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa as dfgsdfgsd,
aksjdhflsakhdflkjsadlfajkslhfdkjsaldajlahflashdfljahlfksajlhfajfjfsaahflakjslhdfkjalhdskjfa as sdkjflsdjlahlfd,
)
# At the top-level, force one empty line after an import, but allow up to two empty
# lines.
import os
import sys
x = 1
import os
import sys
x = 1
import os
import sys
x = 1
import os
import sys
x = 1
# In a nested scope, force one empty line after an import.
def func():
import os
import sys
x = 1
def func():
import os
import sys
x = 1
def func():
import os
import sys
x = 1
def func():
import os
import sys
x = 1
```