mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
import sorter skips from __future__ imports (PY-10022)
This commit is contained in:
@@ -85,6 +85,9 @@ public class PyImportOptimizer implements ImportOptimizer {
|
||||
}
|
||||
LanguageLevel langLevel = LanguageLevel.forElement(myFile);
|
||||
for (PyImportStatementBase importStatement : myImportBlock) {
|
||||
if (importStatement instanceof PyFromImportStatement && ((PyFromImportStatement)importStatement).isFromFuture()) {
|
||||
continue;
|
||||
}
|
||||
if (importStatement instanceof PyImportStatement && importStatement.getImportElements().length > 1) {
|
||||
for (PyImportElement importElement : importStatement.getImportElements()) {
|
||||
myMissorted = true;
|
||||
@@ -96,7 +99,7 @@ public class PyImportOptimizer implements ImportOptimizer {
|
||||
else {
|
||||
PsiElement toImport;
|
||||
if (importStatement instanceof PyFromImportStatement) {
|
||||
toImport = ((PyFromImportStatement) importStatement).resolveImportSource();
|
||||
toImport = ((PyFromImportStatement)importStatement).resolveImportSource();
|
||||
}
|
||||
else {
|
||||
toImport = importStatement.getImportElements()[0].resolve();
|
||||
@@ -140,12 +143,21 @@ public class PyImportOptimizer implements ImportOptimizer {
|
||||
addImports(myThirdPartyImports);
|
||||
addImports(myProjectImports);
|
||||
PsiElement lastElement = myImportBlock.get(myImportBlock.size()-1);
|
||||
myFile.deleteChildRange(myImportBlock.get(0), lastElement);
|
||||
myFile.deleteChildRange(findFirstNonFutureImport(), lastElement);
|
||||
for (PyImportStatementBase anImport : myBuiltinImports) {
|
||||
anImport.putCopyableUserData(PyBlock.IMPORT_GROUP_BEGIN, null);
|
||||
}
|
||||
}
|
||||
|
||||
private PyImportStatementBase findFirstNonFutureImport() {
|
||||
for (PyImportStatementBase importStatement: myImportBlock) {
|
||||
if (!(importStatement instanceof PyFromImportStatement && ((PyFromImportStatement)importStatement).isFromFuture())) {
|
||||
return importStatement;
|
||||
}
|
||||
}
|
||||
return myImportBlock.get(0);
|
||||
}
|
||||
|
||||
private static void markGroupBegin(List<PyImportStatementBase> imports) {
|
||||
if (imports.size() > 0) {
|
||||
imports.get(0).putCopyableUserData(PyBlock.IMPORT_GROUP_BEGIN, true);
|
||||
@@ -154,7 +166,7 @@ public class PyImportOptimizer implements ImportOptimizer {
|
||||
|
||||
private void addImports(final List<PyImportStatementBase> imports) {
|
||||
for (PyImportStatementBase newImport: imports) {
|
||||
myFile.addBefore(newImport, myImportBlock.get(0));
|
||||
myFile.addBefore(newImport, findFirstNonFutureImport());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from __future__ import with_statement
|
||||
import sys
|
||||
import datetime
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
from __future__ import with_statement
|
||||
import foo
|
||||
import sys
|
||||
from bar import *
|
||||
|
||||
Reference in New Issue
Block a user