mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-14432 Handle relative imports of modules, not only packages
This commit is contained in:
@@ -88,9 +88,14 @@ public class PyMoveFileHandler extends MoveFileHandler {
|
||||
if (!relativeImportBasePath.isEmpty()) {
|
||||
//noinspection ConstantConditions
|
||||
final String relativeImportBaseUrl = constructUrl(extractProtocol(originalLocation), relativeImportBasePath);
|
||||
VirtualFile sourceFile = getInstance().findFileByUrl(relativeImportBaseUrl);
|
||||
if (sourceFile != null && sourceFile.exists() && statement.getImportSource() != null) {
|
||||
sourceFile = sourceFile.findFileByRelativePath(statement.getImportSource().getText().replace('.', '/'));
|
||||
final VirtualFile relativeImportBaseDir = getInstance().findFileByUrl(relativeImportBaseUrl);
|
||||
VirtualFile sourceFile = relativeImportBaseDir;
|
||||
if (relativeImportBaseDir != null && relativeImportBaseDir.exists() && statement.getImportSource() != null) {
|
||||
final String relativePath = statement.getImportSource().getText().replace('.', '/');
|
||||
sourceFile = relativeImportBaseDir.findFileByRelativePath(relativePath);
|
||||
if (sourceFile == null) {
|
||||
sourceFile = relativeImportBaseDir.findFileByRelativePath(relativePath + PyNames.DOT_PY);
|
||||
}
|
||||
}
|
||||
if (sourceFile != null) {
|
||||
final PsiManager psiManager = file.getManager();
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
from pkg1 import subpkg2
|
||||
from pkg1.subpkg2 import mod2
|
||||
from pkg1.subpkg2.mod2 import VAR
|
||||
|
||||
# malformed imports
|
||||
from
|
||||
@@ -11,4 +12,4 @@ import pkg1.subpkg2 as foo
|
||||
from pkg1 import subpkg2 as bar
|
||||
from subpkg1 import mod3
|
||||
|
||||
print(subpkg2, mod3, mod2, foo, bar)
|
||||
print(subpkg2, mod3, mod2, foo, bar, VAR)
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
from .. import subpkg2
|
||||
from ..subpkg2 import mod2
|
||||
from ..subpkg2.mod2 import VAR
|
||||
from . import mod3
|
||||
|
||||
# malformed imports
|
||||
@@ -11,4 +12,4 @@ from ..subpkg2 import
|
||||
import pkg1.subpkg2 as foo
|
||||
from pkg1 import subpkg2 as bar
|
||||
|
||||
print(subpkg2, mod3, mod2, foo, bar)
|
||||
print(subpkg2, mod3, mod2, foo, bar, VAR)
|
||||
@@ -195,7 +195,7 @@ public class PyMoveTest extends PyTestCase {
|
||||
}
|
||||
|
||||
// PY-14432
|
||||
public void testRelativeImportInsideMovedModule() {
|
||||
public void testRelativeImportsInsideMovedModule() {
|
||||
doMoveFileTest("pkg1/subpkg1", "");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user