From 6185917f904a995733c00e52c8392ebc6582fddd Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Fri, 3 Oct 2014 17:27:46 +0400 Subject: [PATCH] PY-13740 Django 1.7 QuerySet.as_manager() code completion support: PyDynamicMember renamed --- ...DynamicMember.java => PyCustomMember.java} | 34 +++++++++---------- .../psi/types/PyClassMembersProvider.java | 4 +-- .../psi/types/PyClassMembersProviderBase.java | 10 +++--- .../psi/types/PyModuleMembersProvider.java | 8 ++--- .../NumpyModuleMembersProvider.java | 8 ++--- .../stdlib/PyStdlibClassMembersProvider.java | 16 ++++----- .../stdlib/PyStdlibModuleMembersProvider.java | 8 ++--- .../PyUserSkeletonsClassMembersProvider.java | 14 ++++---- .../PyUserSkeletonsModuleMembersProvider.java | 8 ++--- .../PyUnresolvedReferencesInspection.java | 6 ++-- .../python/psi/types/PyClassTypeImpl.java | 4 +-- .../python/psi/types/PyModuleType.java | 4 +-- 12 files changed, 62 insertions(+), 62 deletions(-) rename python/psi-api/src/com/jetbrains/python/codeInsight/{PyDynamicMember.java => PyCustomMember.java} (82%) diff --git a/python/psi-api/src/com/jetbrains/python/codeInsight/PyDynamicMember.java b/python/psi-api/src/com/jetbrains/python/codeInsight/PyCustomMember.java similarity index 82% rename from python/psi-api/src/com/jetbrains/python/codeInsight/PyDynamicMember.java rename to python/psi-api/src/com/jetbrains/python/codeInsight/PyCustomMember.java index a344e892588c..12b81805822d 100644 --- a/python/psi-api/src/com/jetbrains/python/codeInsight/PyDynamicMember.java +++ b/python/psi-api/src/com/jetbrains/python/codeInsight/PyCustomMember.java @@ -33,7 +33,7 @@ import javax.swing.*; /** * @author Dennis.Ushakov */ -public class PyDynamicMember { +public class PyCustomMember { private String myName; private final boolean myResolveToInstance; private final Function myTypeCallback; @@ -45,7 +45,7 @@ public class PyDynamicMember { boolean myFunction = false; - public PyDynamicMember(@NotNull final String name, @Nullable final String type, final boolean resolveToInstance) { + public PyCustomMember(@NotNull final String name, @Nullable final String type, final boolean resolveToInstance) { myName = name; myResolveToInstance = resolveToInstance; myTypeName = type; @@ -54,7 +54,7 @@ public class PyDynamicMember { myTypeCallback = null; } - public PyDynamicMember(@NotNull final String name) { + public PyCustomMember(@NotNull final String name) { myName = name; myResolveToInstance = false; myTypeName = null; @@ -63,9 +63,9 @@ public class PyDynamicMember { myTypeCallback = null; } - public PyDynamicMember(@NotNull final String name, - @Nullable final String type, - final Function typeCallback) { + public PyCustomMember(@NotNull final String name, + @Nullable final String type, + final Function typeCallback) { myName = name; myResolveToInstance = false; @@ -75,7 +75,7 @@ public class PyDynamicMember { myTypeCallback = typeCallback; } - public PyDynamicMember(@NotNull final String name, @Nullable final PsiElement target) { + public PyCustomMember(@NotNull final String name, @Nullable final PsiElement target) { myName = name; myTarget = target; myResolveToInstance = false; @@ -83,47 +83,47 @@ public class PyDynamicMember { myTypeCallback = null; } - public PyDynamicMember resolvesTo(String moduleQName) { + public PyCustomMember resolvesTo(String moduleQName) { myPsiPath = new PyPsiPath.ToFile(moduleQName); return this; } - public PyDynamicMember resolvesToClass(String classQName) { + public PyCustomMember resolvesToClass(String classQName) { myPsiPath = new PyPsiPath.ToClassQName(classQName); return this; } - public PyDynamicMember toClass(String name) { + public PyCustomMember toClass(String name) { myPsiPath = new PyPsiPath.ToClass(myPsiPath, name); return this; } - public PyDynamicMember toFunction(String name) { + public PyCustomMember toFunction(String name) { myPsiPath = new PyPsiPath.ToFunction(myPsiPath, name); return this; } - public PyDynamicMember toFunctionRecursive(String name) { + public PyCustomMember toFunctionRecursive(String name) { myPsiPath = new PyPsiPath.ToFunctionRecursive(myPsiPath, name); return this; } - public PyDynamicMember toClassAttribute(String name) { + public PyCustomMember toClassAttribute(String name) { myPsiPath = new PyPsiPath.ToClassAttribute(myPsiPath, name); return this; } - public PyDynamicMember toCall(String name, String... args) { + public PyCustomMember toCall(String name, String... args) { myPsiPath = new PyPsiPath.ToCall(myPsiPath, name, args); return this; } - public PyDynamicMember toAssignment(String assignee) { + public PyCustomMember toAssignment(String assignee) { myPsiPath = new PyPsiPath.ToAssignment(myPsiPath, assignee); return this; } - public PyDynamicMember toPsiElement(final PsiElement psiElement) { + public PyCustomMember toPsiElement(final PsiElement psiElement) { myPsiPath = new PyPsiPath() { @Override @@ -179,7 +179,7 @@ public class PyDynamicMember { return myTypeName.substring(pos + 1); } - public PyDynamicMember asFunction() { + public PyCustomMember asFunction() { myFunction = true; return this; } diff --git a/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProvider.java b/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProvider.java index e051b48fbfaa..6a61de999abc 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProvider.java +++ b/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProvider.java @@ -17,7 +17,7 @@ package com.jetbrains.python.psi.types; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.psi.PsiElement; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -30,7 +30,7 @@ public interface PyClassMembersProvider { ExtensionPointName EP_NAME = ExtensionPointName.create("Pythonid.pyClassMembersProvider"); @NotNull - Collection getMembers(PyClassType clazz, @Nullable PsiElement location); + Collection getMembers(PyClassType clazz, @Nullable PsiElement location); @Nullable PsiElement resolveMember(PyClassType clazz, String name, @Nullable PsiElement location); diff --git a/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProviderBase.java b/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProviderBase.java index a7d66499cf52..6ec96559911a 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProviderBase.java +++ b/python/psi-api/src/com/jetbrains/python/psi/types/PyClassMembersProviderBase.java @@ -16,7 +16,7 @@ package com.jetbrains.python.psi.types; import com.intellij.psi.PsiElement; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.PyClass; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -30,22 +30,22 @@ import java.util.Collections; public class PyClassMembersProviderBase implements PyClassMembersProvider { @NotNull @Override - public Collection getMembers(PyClassType clazz, PsiElement location) { + public Collection getMembers(PyClassType clazz, PsiElement location) { return Collections.emptyList(); } @Override public PsiElement resolveMember(PyClassType clazz, String name, PsiElement location) { - final Collection members = getMembers(clazz, location); + final Collection members = getMembers(clazz, location); return resolveMemberByName(members, clazz, name); } @Nullable - public static PsiElement resolveMemberByName(Collection members, + public static PsiElement resolveMemberByName(Collection members, PyClassType clazz, String name) { final PyClass pyClass = clazz.getPyClass(); - for (PyDynamicMember member : members) { + for (PyCustomMember member : members) { if (member.getName().equals(name)) { return member.resolve(pyClass); } diff --git a/python/psi-api/src/com/jetbrains/python/psi/types/PyModuleMembersProvider.java b/python/psi-api/src/com/jetbrains/python/psi/types/PyModuleMembersProvider.java index 696dcaee6623..60d13fde976e 100644 --- a/python/psi-api/src/com/jetbrains/python/psi/types/PyModuleMembersProvider.java +++ b/python/psi-api/src/com/jetbrains/python/psi/types/PyModuleMembersProvider.java @@ -18,7 +18,7 @@ package com.jetbrains.python.psi.types; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.PyPsiFacade; import com.jetbrains.python.psi.resolve.PointInImport; @@ -33,7 +33,7 @@ import java.util.Collections; public abstract class PyModuleMembersProvider { public static final ExtensionPointName EP_NAME = ExtensionPointName.create("Pythonid.pyModuleMembersProvider"); - public Collection getMembers(PyFile module, PointInImport point) { + public Collection getMembers(PyFile module, PointInImport point) { final VirtualFile vFile = module.getVirtualFile(); if (vFile != null) { final String qName = PyPsiFacade.getInstance(module.getProject()).findShortestImportableName(vFile, module); @@ -46,7 +46,7 @@ public abstract class PyModuleMembersProvider { @Nullable public PsiElement resolveMember(PyFile module, String name) { - for (PyDynamicMember o : getMembers(module, PointInImport.NONE)) { + for (PyCustomMember o : getMembers(module, PointInImport.NONE)) { if (o.getName().equals(name)) { return o.resolve(module); } @@ -54,5 +54,5 @@ public abstract class PyModuleMembersProvider { return null; } - protected abstract Collection getMembersByQName(PyFile module, String qName); + protected abstract Collection getMembersByQName(PyFile module, String qName); } diff --git a/python/src/com/jetbrains/numpy/codeInsight/NumpyModuleMembersProvider.java b/python/src/com/jetbrains/numpy/codeInsight/NumpyModuleMembersProvider.java index 1fd2e3afd58f..fadf38916d0b 100644 --- a/python/src/com/jetbrains/numpy/codeInsight/NumpyModuleMembersProvider.java +++ b/python/src/com/jetbrains/numpy/codeInsight/NumpyModuleMembersProvider.java @@ -15,7 +15,7 @@ */ package com.jetbrains.numpy.codeInsight; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.types.PyModuleMembersProvider; @@ -39,11 +39,11 @@ public class NumpyModuleMembersProvider extends PyModuleMembersProvider { }; @Override - protected Collection getMembersByQName(PyFile module, String qName) { + protected Collection getMembersByQName(PyFile module, String qName) { if ("numpy".equals(qName)) { - final List members = new ArrayList(); + final List members = new ArrayList(); for (String type : NUMERIC_TYPES) { - members.add(new PyDynamicMember(type, "numpy.core.multiarray.dtype", false)); + members.add(new PyCustomMember(type, "numpy.core.multiarray.dtype", false)); } return members; } diff --git a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibClassMembersProvider.java b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibClassMembersProvider.java index b0b8c06c92de..334552aaf8c0 100644 --- a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibClassMembersProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibClassMembersProvider.java @@ -17,7 +17,7 @@ package com.jetbrains.python.codeInsight.stdlib; import com.intellij.openapi.util.Key; import com.intellij.psi.PsiElement; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.PyTargetExpression; @@ -35,16 +35,16 @@ import java.util.List; * @author yole */ public class PyStdlibClassMembersProvider extends PyClassMembersProviderBase { - private Key> mySocketMembersKey = Key.create("socket.members"); + private Key> mySocketMembersKey = Key.create("socket.members"); @NotNull @Override - public Collection getMembers(PyClassType classType, PsiElement location) { + public Collection getMembers(PyClassType classType, PsiElement location) { PyClass clazz = classType.getPyClass(); final String qualifiedName = clazz.getQualifiedName(); if ("socket._socketobject".equals(qualifiedName)) { final PyFile socketFile = (PyFile)clazz.getContainingFile(); - List socketMembers = socketFile.getUserData(mySocketMembersKey); + List socketMembers = socketFile.getUserData(mySocketMembersKey); if (socketMembers == null) { socketMembers = calcSocketMembers(socketFile); socketFile.putUserData(mySocketMembersKey, socketMembers); @@ -54,20 +54,20 @@ public class PyStdlibClassMembersProvider extends PyClassMembersProviderBase { return Collections.emptyList(); } - private static List calcSocketMembers(PyFile socketFile) { - List result = new ArrayList(); + private static List calcSocketMembers(PyFile socketFile) { + List result = new ArrayList(); addMethodsFromAttr(socketFile, result, "_socketmethods"); addMethodsFromAttr(socketFile, result, "_delegate_methods"); return result; } - private static void addMethodsFromAttr(PyFile socketFile, List result, final String attrName) { + private static void addMethodsFromAttr(PyFile socketFile, List result, final String attrName) { final PyTargetExpression socketMethods = socketFile.findTopLevelAttribute(attrName); if (socketMethods != null) { final List methods = PyUtil.getStringListFromTargetExpression(socketMethods); if (methods != null) { for (String name : methods) { - result.add(new PyDynamicMember(name).resolvesTo("_socket").toClass("SocketType").toFunction(name)); + result.add(new PyCustomMember(name).resolvesTo("_socket").toClass("SocketType").toFunction(name)); } } } diff --git a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java index 80d3627ac083..a724b7808a75 100644 --- a/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibModuleMembersProvider.java @@ -18,7 +18,7 @@ package com.jetbrains.python.codeInsight.stdlib; import com.intellij.openapi.util.SystemInfo; import com.intellij.psi.PsiElement; import com.intellij.psi.util.QualifiedName; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.resolve.ResolveImportUtil; import com.jetbrains.python.psi.types.PyModuleMembersProvider; @@ -33,15 +33,15 @@ import java.util.List; */ public class PyStdlibModuleMembersProvider extends PyModuleMembersProvider { @Override - protected Collection getMembersByQName(PyFile module, String qName) { + protected Collection getMembersByQName(PyFile module, String qName) { if (qName.equals("os")) { - final List results = new ArrayList(); + final List results = new ArrayList(); PsiElement path = null; if (module != null) { final String pathModuleName = SystemInfo.isWindows ? "ntpath" : "posixpath"; path = ResolveImportUtil.resolveModuleInRoots(QualifiedName.fromDottedString(pathModuleName), module); } - results.add(new PyDynamicMember("path", path)); + results.add(new PyCustomMember("path", path)); return results; } return Collections.emptyList(); diff --git a/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsClassMembersProvider.java b/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsClassMembersProvider.java index 5ac7fc10751c..104aceb861c0 100644 --- a/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsClassMembersProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsClassMembersProvider.java @@ -16,7 +16,7 @@ package com.jetbrains.python.codeInsight.userSkeletons; import com.intellij.psi.PsiElement; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.PyClass; import com.jetbrains.python.psi.PyFunction; import com.jetbrains.python.psi.PyTargetExpression; @@ -37,7 +37,7 @@ import java.util.List; public class PyUserSkeletonsClassMembersProvider extends PyClassMembersProviderBase implements PyOverridingAncestorsClassMembersProvider { @NotNull @Override - public Collection getMembers(@NotNull PyClassType classType, PsiElement location) { + public Collection getMembers(@NotNull PyClassType classType, PsiElement location) { final PyClass cls = classType.getPyClass(); final PyClass skeleton = PyUserSkeletonsUtil.getUserSkeleton(cls); if (skeleton != null) { @@ -73,24 +73,24 @@ public class PyUserSkeletonsClassMembersProvider extends PyClassMembersProviderB return null; } - private static Collection getClassMembers(@NotNull PyClass cls) { - final List result = new ArrayList(); + private static Collection getClassMembers(@NotNull PyClass cls) { + final List result = new ArrayList(); for (PyFunction function : cls.getMethods()) { final String name = function.getName(); if (name != null) { - result.add(new PyDynamicMember(name, function)); + result.add(new PyCustomMember(name, function)); } } for (PyTargetExpression attribute : cls.getInstanceAttributes()) { final String name = attribute.getName(); if (name != null) { - result.add(new PyDynamicMember(name, attribute)); + result.add(new PyCustomMember(name, attribute)); } } for (PyTargetExpression attribute : cls.getClassAttributes()) { final String name = attribute.getName(); if (name != null) { - result.add(new PyDynamicMember(name, attribute)); + result.add(new PyCustomMember(name, attribute)); } } return result; diff --git a/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsModuleMembersProvider.java b/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsModuleMembersProvider.java index ad876ee4ec91..c42d15c6f463 100644 --- a/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsModuleMembersProvider.java +++ b/python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsModuleMembersProvider.java @@ -17,7 +17,7 @@ package com.jetbrains.python.codeInsight.userSkeletons; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFileSystemItem; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.PyElement; import com.jetbrains.python.psi.PyFile; import com.jetbrains.python.psi.types.PyModuleMembersProvider; @@ -43,17 +43,17 @@ public class PyUserSkeletonsModuleMembersProvider extends PyModuleMembersProvide } @Override - protected Collection getMembersByQName(PyFile module, String qName) { + protected Collection getMembersByQName(PyFile module, String qName) { final PyFile moduleSkeleton = PyUserSkeletonsUtil.getUserSkeletonForModuleQName(qName, module); if (moduleSkeleton != null) { - final List results = new ArrayList(); + final List results = new ArrayList(); for (PyElement element : moduleSkeleton.iterateNames()) { if (element instanceof PsiFileSystemItem) { continue; } final String name = element.getName(); if (name != null) { - results.add(new PyDynamicMember(name, element)); + results.add(new PyCustomMember(name, element)); } } return results; diff --git a/python/src/com/jetbrains/python/inspections/unresolvedReference/PyUnresolvedReferencesInspection.java b/python/src/com/jetbrains/python/inspections/unresolvedReference/PyUnresolvedReferencesInspection.java index 8049546a6e92..0e2491134d5c 100644 --- a/python/src/com/jetbrains/python/inspections/unresolvedReference/PyUnresolvedReferencesInspection.java +++ b/python/src/com/jetbrains/python/inspections/unresolvedReference/PyUnresolvedReferencesInspection.java @@ -35,7 +35,7 @@ import com.intellij.util.PlatformUtils; import com.jetbrains.python.PyBundle; import com.jetbrains.python.PyNames; import com.jetbrains.python.codeInsight.PyCodeInsightSettings; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.codeInsight.imports.AutoImportHintAction; @@ -721,8 +721,8 @@ public class PyUnresolvedReferencesInspection extends PyInspection { PsiReference reference, @NotNull final String name) { for (PyClassMembersProvider provider : Extensions.getExtensions(PyClassMembersProvider.EP_NAME)) { - final Collection resolveResult = provider.getMembers(type, reference.getElement()); - for (PyDynamicMember member : resolveResult) { + final Collection resolveResult = provider.getMembers(type, reference.getElement()); + for (PyCustomMember member : resolveResult) { if (member.getName().equals(name)) return true; } } diff --git a/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java b/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java index 34a92e16bf01..9a7f2f107ee8 100644 --- a/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java +++ b/python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java @@ -33,7 +33,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.ProcessingContext; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.python.PyNames; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyBuiltinCache; import com.jetbrains.python.psi.impl.ResolveResultList; @@ -415,7 +415,7 @@ public class PyClassTypeImpl extends UserDataHolderBase implements PyClassType { // from providers for (PyClassMembersProvider provider : Extensions.getExtensions(PyClassMembersProvider.EP_NAME)) { - for (PyDynamicMember member : provider.getMembers(this, location)) { + for (PyCustomMember member : provider.getMembers(this, location)) { final String name = member.getName(); if (!namesAlready.contains(name)) { LookupElementBuilder lookupElementBuilder = LookupElementBuilder.create(name).withIcon(member.getIcon()).withTypeText(getName()); diff --git a/python/src/com/jetbrains/python/psi/types/PyModuleType.java b/python/src/com/jetbrains/python/psi/types/PyModuleType.java index db5a9ba3f1ae..0aec8612c989 100644 --- a/python/src/com/jetbrains/python/psi/types/PyModuleType.java +++ b/python/src/com/jetbrains/python/psi/types/PyModuleType.java @@ -30,7 +30,7 @@ import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.util.ProcessingContext; import com.jetbrains.python.PyNames; -import com.jetbrains.python.codeInsight.PyDynamicMember; +import com.jetbrains.python.codeInsight.PyCustomMember; import com.jetbrains.python.codeInsight.controlflow.ScopeOwner; import com.jetbrains.python.codeInsight.dataflow.scope.ScopeUtil; import com.jetbrains.python.psi.*; @@ -289,7 +289,7 @@ public class PyModuleType implements PyType { // Modules don't descend from obje Set namesAlready = context.get(CTX_NAMES); PointInImport point = ResolveImportUtil.getPointInImport(location); for (PyModuleMembersProvider provider : Extensions.getExtensions(PyModuleMembersProvider.EP_NAME)) { - for (PyDynamicMember member : provider.getMembers(myModule, point)) { + for (PyCustomMember member : provider.getMembers(myModule, point)) { final String name = member.getName(); if (namesAlready != null) { namesAlready.add(name);