PY-71562 Make python support for FileIndexableEntitiesProvider

GitOrigin-RevId: 62f8c2b18d0d6b0988a85e4adf320f4200212fd0
This commit is contained in:
Andrey.Matveev
2024-03-28 11:28:48 +02:00
committed by intellij-monorepo-bot
parent cec889ca95
commit 157e636bea
7 changed files with 66 additions and 0 deletions

1
.idea/modules.xml generated
View File

@@ -1183,6 +1183,7 @@
<module fileurl="file://$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/intellij.searchEverywhereMl.semantics.iml" filepath="$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/intellij.searchEverywhereMl.semantics.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/java/intellij.searchEverywhereMl.semantics.java.iml" filepath="$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/java/intellij.searchEverywhereMl.semantics.java.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/kotlin/intellij.searchEverywhereMl.semantics.kotlin.iml" filepath="$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/kotlin/intellij.searchEverywhereMl.semantics.kotlin.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/python/intellij.searchEverywhereMl.semantics.python.iml" filepath="$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/python/intellij.searchEverywhereMl.semantics.python.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/test-commands/intellij.searchEverywhereMl.semantics.testCommands.iml" filepath="$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/test-commands/intellij.searchEverywhereMl.semantics.testCommands.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/tests/intellij.searchEverywhereMl.semantics.tests.iml" filepath="$PROJECT_DIR$/plugins/search-everywhere-ml/semantics/tests/intellij.searchEverywhereMl.semantics.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/search-everywhere-ml/typos/intellij.searchEverywhereMl.typos.iml" filepath="$PROJECT_DIR$/plugins/search-everywhere-ml/typos/intellij.searchEverywhereMl.typos.iml" />

View File

@@ -181,6 +181,7 @@
<orderEntry type="module" module-name="intellij.searchEverywhereMl.typos" scope="TEST" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.semantics.java" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.semantics.kotlin" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.searchEverywhereMl.semantics.python" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.toml" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.platform.tracing.ide" scope="RUNTIME" />
<orderEntry type="module" module-name="intellij.notebooks.visualization" scope="RUNTIME" />

View File

@@ -292,6 +292,7 @@ object CommunityRepositoryModules {
)) { spec ->
spec.withModule("intellij.searchEverywhereMl.semantics.java")
spec.withModule("intellij.searchEverywhereMl.semantics.kotlin")
spec.withModule("intellij.searchEverywhereMl.semantics.python")
spec.withModule("intellij.searchEverywhereMl.semantics.testCommands")
},
plugin("intellij.platform.testFramework.ui") { spec ->

View File

@@ -22,6 +22,7 @@
<module name="intellij.searchEverywhereMl.semantics"/>
<module name="intellij.searchEverywhereMl.semantics.java"/>
<module name="intellij.searchEverywhereMl.semantics.kotlin"/>
<module name="intellij.searchEverywhereMl.semantics.python"/>
<module name="intellij.searchEverywhereMl.semantics.testCommands"/>
</content>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="kotlin-stdlib" level="project" />
<orderEntry type="module" module-name="intellij.platform.ml.embeddings" />
<orderEntry type="module" module-name="intellij.python.psi" />
<orderEntry type="module" module-name="intellij.platform.core" />
</component>
</module>

View File

@@ -0,0 +1,12 @@
<idea-plugin package="com.intellij.searchEverywhereMl.semantics.python">
<dependencies>
<plugin id="com.intellij.modules.python"/>
<module name="intellij.python.community.impl"/>
<module name="intellij.searchEverywhereMl.semantics"/>
</dependencies>
<extensions defaultExtensionNs="com.intellij.searcheverywhere.ml">
<fileIndexableEntitiesProvider
implementation="com.intellij.searchEverywhereMl.semantics.python.PythonIndexableEntitiesProvider"/>
</extensions>
</idea-plugin>

View File

@@ -0,0 +1,34 @@
package com.intellij.searchEverywhereMl.semantics.python
import com.intellij.platform.ml.embeddings.search.indices.FileIndexableEntitiesProvider
import com.intellij.platform.ml.embeddings.search.services.IndexableClass
import com.intellij.platform.ml.embeddings.search.services.IndexableSymbol
import com.intellij.psi.PsiFile
import com.intellij.psi.util.PsiTreeUtil
import com.jetbrains.python.psi.PyClass
import com.jetbrains.python.psi.PyFile
import com.jetbrains.python.psi.PyFunction
class PythonIndexableEntitiesProvider : FileIndexableEntitiesProvider {
override fun extractIndexableSymbols(file: PsiFile): List<IndexableSymbol> {
return when (file) {
is PyFile -> PsiTreeUtil.findChildrenOfAnyType(file, false, PyFunction::class.java)
.filter { it.name != ANONYMOUS_ID }
.map { IndexableSymbol(it.name?.intern() ?: "") }
else -> emptyList()
}
}
override fun extractIndexableClasses(file: PsiFile): List<IndexableClass> {
return when (file) {
is PyFile -> PsiTreeUtil.getStubChildrenOfTypeAsList(file, PyClass::class.java)
.filter { it.name != ANONYMOUS_ID }
.map { IndexableClass(it.name?.intern() ?: "") }
else -> emptyList()
}
}
companion object {
private const val ANONYMOUS_ID = "<anonymous>"
}
}