Avoid tracking as-imports separately with force-single-line (#3530)

This commit is contained in:
Charlie Marsh 2023-03-14 22:26:01 -04:00 committed by GitHub
parent 57796c5e59
commit d188d242a0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 16 additions and 7 deletions

View file

@ -1,5 +1,10 @@
import sys, math import sys, math
from os import path, uname from os import path, uname
from json import detect_encoding
from json import dump
from json import dumps as json_dumps
from json import load
from json import loads as json_loads
from logging.handlers import StreamHandler, FileHandler from logging.handlers import StreamHandler, FileHandler
# comment 1 # comment 1

View file

@ -143,7 +143,7 @@ pub fn format_imports(
let block = annotate_imports(&block.imports, comments, locator, split_on_trailing_comma); let block = annotate_imports(&block.imports, comments, locator, split_on_trailing_comma);
// Normalize imports (i.e., deduplicate, aggregate `from` imports). // Normalize imports (i.e., deduplicate, aggregate `from` imports).
let block = normalize_imports(block, combine_as_imports); let block = normalize_imports(block, combine_as_imports, force_single_line);
let mut output = String::new(); let mut output = String::new();

View file

@ -3,7 +3,11 @@ use crate::rules::isort::types::TrailingComma;
use super::types::{AliasData, ImportBlock, ImportFromData}; use super::types::{AliasData, ImportBlock, ImportFromData};
use super::AnnotatedImport; use super::AnnotatedImport;
pub fn normalize_imports(imports: Vec<AnnotatedImport>, combine_as_imports: bool) -> ImportBlock { pub fn normalize_imports(
imports: Vec<AnnotatedImport>,
combine_as_imports: bool,
force_single_line: bool,
) -> ImportBlock {
let mut block = ImportBlock::default(); let mut block = ImportBlock::default();
for import in imports { for import in imports {
match import { match import {
@ -55,7 +59,7 @@ pub fn normalize_imports(imports: Vec<AnnotatedImport>, combine_as_imports: bool
.import_from_star .import_from_star
.entry(ImportFromData { module, level }) .entry(ImportFromData { module, level })
.or_default() .or_default()
} else if alias.asname.is_none() || combine_as_imports { } else if alias.asname.is_none() || combine_as_imports || force_single_line {
block block
.import_from .import_from
.entry(ImportFromData { module, level }) .entry(ImportFromData { module, level })
@ -89,7 +93,7 @@ pub fn normalize_imports(imports: Vec<AnnotatedImport>, combine_as_imports: bool
.import_from_star .import_from_star
.entry(ImportFromData { module, level }) .entry(ImportFromData { module, level })
.or_default() .or_default()
} else if alias.asname.is_none() || combine_as_imports { } else if alias.asname.is_none() || combine_as_imports || force_single_line {
block block
.import_from .import_from
.entry(ImportFromData { module, level }) .entry(ImportFromData { module, level })

View file

@ -11,15 +11,15 @@ expression: diagnostics
row: 1 row: 1
column: 0 column: 0
end_location: end_location:
row: 20 row: 25
column: 0 column: 0
fix: fix:
content: "import math\nimport sys\nfrom logging.handlers import FileHandler, StreamHandler\nfrom os import path, uname\n\n# comment 6\nfrom bar import a # comment 7\nfrom bar import b # comment 8\nfrom foo import bar # comment 3\nfrom foo2 import bar2 # comment 4\nfrom foo3 import bar3 # comment 5\nfrom foo3 import baz3 # comment 5\n\n# comment 1\n# comment 2\nfrom third_party import lib1\nfrom third_party import lib2\nfrom third_party import lib3\nfrom third_party import lib4\nfrom third_party import lib5\nfrom third_party import lib6\nfrom third_party import lib7\n" content: "import math\nimport sys\nfrom json import detect_encoding\nfrom json import dump\nfrom json import dumps as json_dumps\nfrom json import load\nfrom json import loads as json_loads\nfrom logging.handlers import FileHandler, StreamHandler\nfrom os import path, uname\n\n# comment 6\nfrom bar import a # comment 7\nfrom bar import b # comment 8\nfrom foo import bar # comment 3\nfrom foo2 import bar2 # comment 4\nfrom foo3 import bar3 # comment 5\nfrom foo3 import baz3 # comment 5\n\n# comment 1\n# comment 2\nfrom third_party import lib1\nfrom third_party import lib2\nfrom third_party import lib3\nfrom third_party import lib4\nfrom third_party import lib5\nfrom third_party import lib6\nfrom third_party import lib7\n"
location: location:
row: 1 row: 1
column: 0 column: 0
end_location: end_location:
row: 20 row: 25
column: 0 column: 0
parent: ~ parent: ~