diff --git a/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java b/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java
index e62910144b45..a5c9a10d0454 100644
--- a/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java
+++ b/python/src/com/jetbrains/python/codeInsight/imports/ImportCandidateHolder.java
@@ -25,10 +25,14 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileSystemItem;
import com.intellij.psi.util.QualifiedName;
+import com.intellij.util.Function;
+import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.util.List;
+
/**
* An immutable holder of information for one auto-import candidate.
*
@@ -131,15 +135,15 @@ class ImportCandidateHolder implements Comparable {
sb.append(((PyFunction)myImportable).getParameterList().getPresentableText(false));
}
else if (myImportable instanceof PyClass) {
- final PyClass[] supers = ((PyClass)myImportable).getSuperClasses();
- if (supers.length > 0) {
+ final List supers = ContainerUtil.mapNotNull(((PyClass)myImportable).getSuperClasses(), new Function() {
+ @Override
+ public String fun(PyClass cls) {
+ return PyUtil.isObjectClass(cls) ? null : cls.getName();
+ }
+ });
+ if (!supers.isEmpty()) {
sb.append("(");
- // ", ".join(x.getName() for x in getSuperClasses())
- final String[] superNames = new String[supers.length];
- for (int i = 0; i < supers.length; i += 1) {
- superNames[i] = supers[i].getName();
- }
- sb.append(StringUtil.join(superNames, ", "));
+ StringUtil.join(supers, ", ", sb);
sb.append(")");
}
}
diff --git a/python/testData/inspections/objectBaseIsNotShownInAutoImportQuickfix/main.py b/python/testData/inspections/objectBaseIsNotShownInAutoImportQuickfix/main.py
new file mode 100644
index 000000000000..b5e5da256cfa
--- /dev/null
+++ b/python/testData/inspections/objectBaseIsNotShownInAutoImportQuickfix/main.py
@@ -0,0 +1 @@
+MyOldStyleClass
diff --git a/python/testData/inspections/objectBaseIsNotShownInAutoImportQuickfix/module.py b/python/testData/inspections/objectBaseIsNotShownInAutoImportQuickfix/module.py
new file mode 100644
index 000000000000..4652e3d0f87e
--- /dev/null
+++ b/python/testData/inspections/objectBaseIsNotShownInAutoImportQuickfix/module.py
@@ -0,0 +1,2 @@
+class MyOldStyleClass:
+ pass
diff --git a/python/testSrc/com/jetbrains/python/PyQuickFixTest.java b/python/testSrc/com/jetbrains/python/PyQuickFixTest.java
index 6cc2e578fb30..4b9b5ca42e0c 100644
--- a/python/testSrc/com/jetbrains/python/PyQuickFixTest.java
+++ b/python/testSrc/com/jetbrains/python/PyQuickFixTest.java
@@ -50,6 +50,16 @@ public class PyQuickFixTest extends PyTestCase {
PyUnresolvedReferencesInspection.class, "Import 'importFromModule.foo.baz'", true, true);
}
+ // PY-14365
+ public void testObjectBaseIsNotShownInAutoImportQuickfix() {
+ myFixture.copyDirectoryToProject("objectBaseIsNotShownInAutoImportQuickfix", "");
+ myFixture.configureByFile("main.py");
+ myFixture.enableInspections(PyUnresolvedReferencesInspection.class);
+ final IntentionAction intention = myFixture.findSingleIntention("Import");
+ assertNotNull(intention);
+ assertEquals("Import 'module.MyOldStyleClass'", intention.getText());
+ }
+
public void testImportFromModuleStar() { // PY-6302
myFixture.enableInspections(PyUnresolvedReferencesInspection.class);
myFixture.copyDirectoryToProject("importFromModuleStar", "");