diff --git a/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java b/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java index efe00ad4a715..e6f386f0d4e0 100644 --- a/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java +++ b/python/src/com/jetbrains/python/refactoring/move/PyMoveFileHandler.java @@ -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(); diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/pkg1/__init__.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/pkg1/__init__.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/pkg1/__init__.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/pkg1/__init__.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/pkg1/subpkg2/__init__.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/pkg1/subpkg2/__init__.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/pkg1/subpkg2/__init__.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/pkg1/subpkg2/__init__.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/pkg1/subpkg2/mod2.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/pkg1/subpkg2/mod2.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/pkg1/subpkg2/mod2.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/pkg1/subpkg2/mod2.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/subpkg1/__init__.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/subpkg1/__init__.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/subpkg1/__init__.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/subpkg1/__init__.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/subpkg1/mod1.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/subpkg1/mod1.py similarity index 74% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/subpkg1/mod1.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/subpkg1/mod1.py index 43bd9de9b91e..67b279f7f9f7 100644 --- a/python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/subpkg1/mod1.py +++ b/python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/subpkg1/mod1.py @@ -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) diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/subpkg1/mod3.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/subpkg1/mod3.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/after/src/subpkg1/mod3.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/after/src/subpkg1/mod3.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/__init__.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/__init__.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/__init__.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/__init__.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg1/__init__.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg1/__init__.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg1/__init__.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg1/__init__.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg1/mod1.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg1/mod1.py similarity index 74% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg1/mod1.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg1/mod1.py index 974095a51398..d6ab1c6f2d91 100644 --- a/python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg1/mod1.py +++ b/python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg1/mod1.py @@ -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) diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg1/mod3.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg1/mod3.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg1/mod3.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg1/mod3.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg2/__init__.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg2/__init__.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg2/__init__.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg2/__init__.py diff --git a/python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg2/mod2.py b/python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg2/mod2.py similarity index 100% rename from python/testData/refactoring/move/relativeImportInsideMovedModule/before/src/pkg1/subpkg2/mod2.py rename to python/testData/refactoring/move/relativeImportsInsideMovedModule/before/src/pkg1/subpkg2/mod2.py diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyMoveTest.java b/python/testSrc/com/jetbrains/python/refactoring/PyMoveTest.java index 7537582aa6e8..b96d827c3342 100644 --- a/python/testSrc/com/jetbrains/python/refactoring/PyMoveTest.java +++ b/python/testSrc/com/jetbrains/python/refactoring/PyMoveTest.java @@ -195,7 +195,7 @@ public class PyMoveTest extends PyTestCase { } // PY-14432 - public void testRelativeImportInsideMovedModule() { + public void testRelativeImportsInsideMovedModule() { doMoveFileTest("pkg1/subpkg1", ""); }