PY-19674 Treat all relative (with dots) "from" imports as application local imports

This commit is contained in:
Mikhail Golubev
2016-06-15 19:34:13 +03:00
parent 2034207ca7
commit 5e045e5c12
7 changed files with 27 additions and 2 deletions
@@ -225,6 +225,9 @@ public class AddImportHelper {
if (fromImportStatement.isFromFuture()) {
return ImportPriority.FUTURE;
}
if (fromImportStatement.getRelativeLevel() > 0) {
return ImportPriority.PROJECT;
}
resolved = fromImportStatement.resolveImportSource();
}
else {
@@ -16,6 +16,7 @@ from alphabet import B, A
from alphabet import C
from alphabet import D
from b import func
from . import m1
from . import m4, m5
from .pkg import m3
@@ -12,12 +12,13 @@ from alphabet import D
from b import func
from
import foo # broken
from . import m1
import # broken
from alphabet import *
from .. import m2
from alphabet import C
from alphabet import B, A
from . import m1
from .. import m2
from .pkg import m3
from . import m4, m5
@@ -0,0 +1,6 @@
import re
from . import foo
from .module import A
print(re, foo, A)
@@ -0,0 +1,5 @@
import re
from . import foo
from .module import A
print(re, foo, A)
@@ -182,6 +182,15 @@ public class PyOptimizeImportsTest extends PyTestCase {
doTest();
}
// PY-19674
public void testUnresolvedRelativeImportsShouldBeInProjectGroup() {
final String testName = getTestName(true);
myFixture.copyDirectoryToProject(testName, "");
myFixture.configureByFile("pkg/main.py");
OptimizeImportsAction.actionPerformedImpl(DataManager.getInstance().getDataContext(myFixture.getEditor().getContentComponent()));
myFixture.checkResultByFile(testName + "/pkg/main.after.py");
}
private void doTest() {
myFixture.configureByFile(getTestName(true) + ".py");
OptimizeImportsAction.actionPerformedImpl(DataManager.getInstance().getDataContext(myFixture.getEditor().getContentComponent()));