mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
PY-83529 Make type name reasonable (PyModuleType, PyImportedModuleType)
(cherry picked from commit a5f8641bcae3cd01eb7ff174e289cbf3ca5e3b2b) GitOrigin-RevId: 41050e03a015e79c74ff54a390090e5e5f70d783
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3a58a09cbe
commit
c1c6c8c945
@@ -102,7 +102,7 @@ public class PyImportedModuleType implements PyType {
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "imported module " + myImportedModule.getImportedPrefix().toString();
|
||||
return myImportedModule.getImportedPrefix().toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.QualifiedName;
|
||||
import com.intellij.util.LazyInitializer;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.ProcessingContext;
|
||||
import com.intellij.util.Processor;
|
||||
@@ -41,12 +42,14 @@ import static com.jetbrains.python.psi.PyUtil.inSameFile;
|
||||
|
||||
public class PyModuleType implements PyType { // Modules don't descend from object
|
||||
private final @NotNull PyFile myModule;
|
||||
private final @NotNull LazyInitializer.LazyValue<@Nullable QualifiedName> myQualifiedName;
|
||||
|
||||
private static final ImmutableSet<String> MODULE_MEMBERS = ImmutableSet.of(
|
||||
"__name__", "__file__", "__path__", "__doc__", "__dict__", "__package__");
|
||||
|
||||
public PyModuleType(@NotNull PyFile source) {
|
||||
myModule = source;
|
||||
myQualifiedName = LazyInitializer.create(() -> QualifiedNameFinder.findShortestImportableQName(myModule));
|
||||
}
|
||||
|
||||
|
||||
@@ -565,7 +568,8 @@ public class PyModuleType implements PyType { // Modules don't descend from obje
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return myModule.getName();
|
||||
QualifiedName qualifiedName = myQualifiedName.get();
|
||||
return qualifiedName != null ? qualifiedName.toString() : "";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+3
-3
@@ -14,6 +14,6 @@ class Options1(Protocol[T1, T2, T3]):
|
||||
def foo(self, x: T1, y: T2) -> T3: ...
|
||||
|
||||
t1: Options1[int, str, bool] = mod
|
||||
t2: Options1[int, float, bool] = <warning descr="Expected type 'Options1[int, float, bool]', got 'mod.py' instead">mod</warning>
|
||||
t3: Options1[str, float, bool] = <warning descr="Expected type 'Options1[str, float, bool]', got 'mod.py' instead">mod</warning>
|
||||
t4: Options1[int, str, str] = <warning descr="Expected type 'Options1[int, str, str]', got 'mod.py' instead">mod</warning>
|
||||
t2: Options1[int, float, bool] = <warning descr="Expected type 'Options1[int, float, bool]', got 'mod' instead">mod</warning>
|
||||
t3: Options1[str, float, bool] = <warning descr="Expected type 'Options1[str, float, bool]', got 'mod' instead">mod</warning>
|
||||
t4: Options1[int, str, str] = <warning descr="Expected type 'Options1[int, str, str]', got 'mod' instead">mod</warning>
|
||||
+1
-1
@@ -13,4 +13,4 @@ class Options2(Protocol):
|
||||
|
||||
|
||||
op1: Options1 = _protocols_modules1
|
||||
op1: Options2 = <warning descr="Expected type 'Options2', got '_protocols_modules1.py' instead">_protocols_modules1</warning>
|
||||
op1: Options2 = <warning descr="Expected type 'Options2', got '_protocols_modules1' instead">_protocols_modules1</warning>
|
||||
+2
-2
@@ -21,5 +21,5 @@ class Reporter3(Protocol):
|
||||
|
||||
|
||||
rp1: Reporter1 = _protocols_modules2 # OK
|
||||
rp2: Reporter2 = <warning descr="Expected type 'Reporter2', got '_protocols_modules2.py' instead">_protocols_modules2</warning>
|
||||
rp3: Reporter3 = <warning descr="Expected type 'Reporter3', got '_protocols_modules2.py' instead">_protocols_modules2</warning>
|
||||
rp2: Reporter2 = <warning descr="Expected type 'Reporter2', got '_protocols_modules2' instead">_protocols_modules2</warning>
|
||||
rp3: Reporter3 = <warning descr="Expected type 'Reporter3', got '_protocols_modules2' instead">_protocols_modules2</warning>
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import numpy
|
||||
|
||||
numpy.foo()
|
||||
numpy.<warning descr="Cannot find reference 'bar' in '__init__.py'">bar</warning>()
|
||||
numpy.<warning descr="Cannot find reference 'baz' in '__init__.py'">baz</warning>()
|
||||
numpy.<warning descr="Cannot find reference 'bar' in 'numpy'">bar</warning>()
|
||||
numpy.<warning descr="Cannot find reference 'baz' in 'numpy'">baz</warning>()
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
from importSource import <error descr="Cannot find reference 'len' in '__init__.py'">len</error>
|
||||
from importSource import <error descr="Cannot find reference 'len' in 'importSource'">len</error>
|
||||
|
||||
len()
|
||||
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
import <error descr="No module named 'un1'">un1</error>
|
||||
import os.<error descr="No module named 'un2'">un2</error>
|
||||
from os import <error descr="Cannot find reference 'un3' in 'os.py'">un3</error>
|
||||
from os import <error descr="Cannot find reference 'un3' in 'os'">un3</error>
|
||||
from <error descr="Unresolved reference 'un4'">un4</error>.un5 import <error descr="Unresolved reference 'un6'">un6</error>
|
||||
from os.<error descr="Cannot find reference 'un7' in 'os.py'">un7</error> import <error descr="Unresolved reference 'un8'">un8</error>
|
||||
from os.<error descr="Cannot find reference 'un7' in 'os'">un7</error> import <error descr="Unresolved reference 'un8'">un8</error>
|
||||
|
||||
un1
|
||||
os.<warning descr="Cannot find reference 'un2' in 'imported module os'">un2</warning>
|
||||
os.<warning descr="Cannot find reference 'un2' in 'os'">un2</warning>
|
||||
un3
|
||||
un6
|
||||
un8
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import p1.m1 #pass
|
||||
|
||||
print(p1.m1) #pass
|
||||
print(p1.<warning descr="Cannot find reference 'm2' in 'imported module p1'">m2</warning>) #fail
|
||||
print(p1.<warning descr="Cannot find reference 'm2' in 'p1'">m2</warning>) #fail
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from library import foo,<error descr="Cannot find reference 'bar' in 'library.py'">bar</error>
|
||||
from library import foo,<error descr="Cannot find reference 'bar' in 'library'">bar</error>
|
||||
|
||||
|
||||
print(foo)
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import c
|
||||
|
||||
print(c.A().foo())
|
||||
print(c.<warning descr="Cannot find reference 'b' in 'c.py'">b</warning>.A().foo())
|
||||
print(c.<warning descr="Cannot find reference 'b' in 'c'">b</warning>.A().foo())
|
||||
@@ -1,6 +1,6 @@
|
||||
from complete import a
|
||||
from complete import b
|
||||
from complete import <error descr="Cannot find reference 'e' in 'complete.pyi'">e</error>
|
||||
from complete import <error descr="Cannot find reference 'e' in 'complete'">e</error>
|
||||
|
||||
from incomplete import c
|
||||
from incomplete import d
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
from my_module import <error descr="Cannot find reference 'eggs' in 'my_module.py'">eggs</error>
|
||||
from my_module import <error descr="Cannot find reference 'eggs' in 'my_module'">eggs</error>
|
||||
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
from my_module import <error descr="Cannot find reference 'eggs' in 'my_module.py'">eggs</error>
|
||||
from my_module import <error descr="Cannot find reference 'eggs' in 'my_module.py'">eggs</error>
|
||||
from my_module import <error descr="Cannot find reference 'eggs' in 'my_module'">eggs</error>
|
||||
from my_module import <error descr="Cannot find reference 'eggs' in 'my_module'">eggs</error>
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
from my_package.my_module import <error descr="Cannot find reference 'eggs' in 'my_module.py'">eggs</error>
|
||||
from my_package.my_module import <error descr="Cannot find reference 'eggs' in 'my_module.py'">eggs</error>
|
||||
from my_package.my_module import <error descr="Cannot find reference 'eggs' in 'my_package.my_module'">eggs</error>
|
||||
from my_package.my_module import <error descr="Cannot find reference 'eggs' in 'my_package.my_module'">eggs</error>
|
||||
|
||||
eggs()
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
from nspkg1 import <error descr="Cannot find reference 'not_found' in 'imported module nspkg1'">not_found</error>
|
||||
from nspkg1 import <error descr="Cannot find reference 'not_found' in 'nspkg1'">not_found</error>
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
from lib1 import m1
|
||||
from lib1.m1 import x
|
||||
from lib1.m1 import <error descr="Cannot find reference 'something' in 'm1.py'">something</error>
|
||||
from lib1.m1 import <error descr="Cannot find reference 'something' in 'lib1.m1'">something</error>
|
||||
|
||||
|
||||
print(m1, x, something)
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
import nspkg1.m2
|
||||
|
||||
print(nspkg1.m2)
|
||||
print(nspkg1.<warning descr="Cannot find reference 'm3' in 'imported module nspkg1'">m3</warning>)
|
||||
print(nspkg1.<warning descr="Cannot find reference 'nssubpkg1' in 'imported module nspkg1'">nssubpkg1</warning>)
|
||||
print(nspkg1.<warning descr="Cannot find reference 'm3' in 'nspkg1'">m3</warning>)
|
||||
print(nspkg1.<warning descr="Cannot find reference 'nssubpkg1' in 'nspkg1'">nssubpkg1</warning>)
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import c
|
||||
|
||||
print(c.A().foo())
|
||||
print(c.<warning descr="Cannot find reference 'b' in 'c.py'">b</warning>.A().foo())
|
||||
print(c.<warning descr="Cannot find reference 'b' in 'c'">b</warning>.A().foo())
|
||||
@@ -1,3 +1,3 @@
|
||||
import mod
|
||||
|
||||
clzz = mod.<caret><warning descr="Cannot find reference 'Clzz' in 'mod.py'">Clzz</warning>()
|
||||
clzz = mod.<caret><warning descr="Cannot find reference 'Clzz' in 'mod'">Clzz</warning>()
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import pkg
|
||||
|
||||
clzz = pkg.<caret><warning descr="Cannot find reference 'Clzz' in '__init__.py'">Clzz</warning>()
|
||||
clzz = pkg.<caret><warning descr="Cannot find reference 'Clzz' in 'pkg'">Clzz</warning>()
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
from mod import <error descr="Cannot find reference 'Clzz' in 'mod.py'"><caret>Clzz</error>
|
||||
from mod import <error descr="Cannot find reference 'Clzz' in 'mod'"><caret>Clzz</error>
|
||||
|
||||
|
||||
clzz = Clzz()
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
from mypack import <error descr="Cannot find reference 'Clzz' in '__init__.py'"><caret>Clzz</error>
|
||||
from mypack import <error descr="Cannot find reference 'Clzz' in 'mypack'"><caret>Clzz</error>
|
||||
|
||||
clzz = Clzz()
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
from mod import <error descr="Cannot find reference 'foo' in 'mod.py'"><caret>foo</error>
|
||||
from mod import <error descr="Cannot find reference 'foo' in 'mod'"><caret>foo</error>
|
||||
|
||||
|
||||
foo()
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
import mod
|
||||
|
||||
mod.<caret><warning descr="Cannot find reference 'func' in 'mod.py'"><caret>func</warning>()
|
||||
mod.<caret><warning descr="Cannot find reference 'func' in 'mod'"><caret>func</warning>()
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
from mypack import <error descr="Cannot find reference 'foo' in '__init__.py'"><caret>foo</error>
|
||||
from mypack import <error descr="Cannot find reference 'foo' in 'mypack'"><caret>foo</error>
|
||||
|
||||
a = foo()
|
||||
+1
@@ -0,0 +1 @@
|
||||
from mod.<caret><error descr="Cannot find reference 'unresolved' in 'mod'">unresolved</error> import <error descr="Unresolved reference 'something'">something</error>
|
||||
@@ -1,3 +1,3 @@
|
||||
import p1.m1
|
||||
|
||||
print(p1.<warning descr="Cannot find reference 'm2' in 'imported module p1'">m2</warning>.a2)
|
||||
print(p1.<warning descr="Cannot find reference 'm2' in 'p1'">m2</warning>.a2)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from m1 import <error descr="Cannot find reference 'foo' in 'm1.pyi'">foo</error>
|
||||
from m1 import <error descr="Cannot find reference 'bar' in 'm1.pyi'">bar</error>
|
||||
from m1 import <error descr="Cannot find reference 'bar_imported' in 'm1.pyi'">bar_imported</error>
|
||||
from m1 import <error descr="Cannot find reference 'foo' in 'm1'">foo</error>
|
||||
from m1 import <error descr="Cannot find reference 'bar' in 'm1'">bar</error>
|
||||
from m1 import <error descr="Cannot find reference 'bar_imported' in 'm1'">bar_imported</error>
|
||||
from m1 import baz
|
||||
from m1 import quux
|
||||
from m1 import <error descr="Cannot find reference 'm2' in 'm1.pyi'">m2</error>
|
||||
from m1 import <error descr="Cannot find reference 'm2_imported' in 'm1.pyi'">m2_imported</error>
|
||||
from m1 import <error descr="Cannot find reference 'm2' in 'm1'">m2</error>
|
||||
from m1 import <error descr="Cannot find reference 'm2_imported' in 'm1'">m2_imported</error>
|
||||
from m1 import m3
|
||||
|
||||
print(foo, bar, bar_imported, baz, m2, m2_imported, m3, quux)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
from .m1 import foo
|
||||
from .m1 import <error descr="Cannot find reference 'bar' in 'm1.pyi'">bar</error>
|
||||
from .m1 import <error descr="Cannot find reference 'bar' in 'package_with_stub_in_path.m1'">bar</error>
|
||||
|
||||
foo2 = foo
|
||||
bar2 = bar
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
import m1
|
||||
|
||||
|
||||
print(m1.<warning descr="Cannot find reference 'module_only_attr' in 'm1.pyi'">module_only_attr</warning>)
|
||||
print(m1.<warning descr="Cannot find reference 'module_only_attr' in 'm1'">module_only_attr</warning>)
|
||||
print(m1.provided_attr)
|
||||
print(m1.<warning descr="Cannot find reference 'not_provided_attr' in 'm1.pyi'">not_provided_attr</warning>)
|
||||
print(m1.<warning descr="Cannot find reference 'not_provided_attr' in 'm1'">not_provided_attr</warning>)
|
||||
|
||||
@@ -4184,11 +4184,11 @@ public class Py3TypeTest extends PyTestCase {
|
||||
String testDir = TEST_DIRECTORY + getTestName(false);
|
||||
runWithAdditionalClassEntryInSdkRoots(testDir + "/site-packages", () -> {
|
||||
runWithAdditionalClassEntryInSdkRoots(testDir + "/python_stubs", () -> {
|
||||
doTest("imported module pkg", """
|
||||
doTest("pkg", """
|
||||
import pkg.subpkg
|
||||
expr = pkg
|
||||
""");
|
||||
doTest("__init__.py", """
|
||||
doTest("pkg.subpkg", """
|
||||
import pkg.subpkg
|
||||
expr = pkg.subpkg
|
||||
""");
|
||||
|
||||
@@ -2869,14 +2869,14 @@ public class PyTypeTest extends PyTestCase {
|
||||
|
||||
// PY-25751
|
||||
public void testNotImportedModuleInDunderAll() {
|
||||
doMultiFileTest("Union[aaa.py, Any]",
|
||||
doMultiFileTest("Union[pkg.aaa, Any]",
|
||||
"from pkg import *\n" +
|
||||
"expr = aaa");
|
||||
}
|
||||
|
||||
// PY-25751
|
||||
public void testNotImportedPackageInDunderAll() {
|
||||
doMultiFileTest("Union[__init__.py, Any]",
|
||||
doMultiFileTest("Union[pkg.aaa, Any]",
|
||||
"from pkg import *\n" +
|
||||
"expr = aaa");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user