diff --git a/python/src/META-INF/python-core-common.xml b/python/src/META-INF/python-core-common.xml
index cfb42eac4dcd..2b07a429103b 100644
--- a/python/src/META-INF/python-core-common.xml
+++ b/python/src/META-INF/python-core-common.xml
@@ -28,6 +28,7 @@
+
-
-
> {
+ try {
+ return mutableListOf(TomlLiteral::class.java)
+ }
+ catch (exception: NoClassDefFoundError) {
+ return mutableListOf()
+ }
+ }
+}
\ No newline at end of file
diff --git a/python/testData/requirements/completion/packageNameInBuildSystemTablePyProjectToml/pyproject.toml b/python/testData/requirements/completion/packageNameInBuildSystemTablePyProjectToml/pyproject.toml
new file mode 100644
index 000000000000..0f00fe3516ce
--- /dev/null
+++ b/python/testData/requirements/completion/packageNameInBuildSystemTablePyProjectToml/pyproject.toml
@@ -0,0 +1,2 @@
+[build-system]
+requires = [ "my" ]
\ No newline at end of file
diff --git a/python/testData/requirements/completion/packageNameInProjectTablePyProjectToml/pyproject.toml b/python/testData/requirements/completion/packageNameInProjectTablePyProjectToml/pyproject.toml
new file mode 100644
index 000000000000..25ff840b737c
--- /dev/null
+++ b/python/testData/requirements/completion/packageNameInProjectTablePyProjectToml/pyproject.toml
@@ -0,0 +1,2 @@
+[project]
+dependencies = [ "my" ]
\ No newline at end of file
diff --git a/python/testData/requirements/completion/versionInBuildSystemTablePyProjectToml/pyproject.toml b/python/testData/requirements/completion/versionInBuildSystemTablePyProjectToml/pyproject.toml
new file mode 100644
index 000000000000..2bc287004656
--- /dev/null
+++ b/python/testData/requirements/completion/versionInBuildSystemTablePyProjectToml/pyproject.toml
@@ -0,0 +1,2 @@
+[build-system]
+requires = [ "mypy==" ]
\ No newline at end of file
diff --git a/python/testData/requirements/completion/versionInProjectTablePyProjectToml/pyproject.toml b/python/testData/requirements/completion/versionInProjectTablePyProjectToml/pyproject.toml
new file mode 100644
index 000000000000..25b6183f050c
--- /dev/null
+++ b/python/testData/requirements/completion/versionInProjectTablePyProjectToml/pyproject.toml
@@ -0,0 +1,2 @@
+[project]
+dependencies = [ "mypy==" ]
\ No newline at end of file
diff --git a/python/testSrc/com/intellij/python/community/impl/requirements/RequirementsCompletionTest.kt b/python/testSrc/com/intellij/python/community/impl/requirements/RequirementsCompletionTest.kt
index 8393c64b6918..7bed1d6ad468 100644
--- a/python/testSrc/com/intellij/python/community/impl/requirements/RequirementsCompletionTest.kt
+++ b/python/testSrc/com/intellij/python/community/impl/requirements/RequirementsCompletionTest.kt
@@ -30,6 +30,24 @@ class RequirementsCompletionTest : BasePlatformTestCase() {
assertContainsElements(myFixture.lookupElementStrings!!, "mypy", "mypy-extensions")
}
+ fun testPackageNameInProjectTablePyProjectToml() {
+ mockPackageNames(listOf("mypy", "mypy-extensions"))
+
+ myFixture.configureByFile("${getTestName(true)}/pyproject.toml")
+ myFixture.completeBasic()
+ assertNotEmpty(myFixture.lookupElementStrings)
+ assertContainsElements(myFixture.lookupElementStrings!!, "mypy", "mypy-extensions")
+ }
+
+ fun testPackageNameInBuildSystemTablePyProjectToml() {
+ mockPackageNames(listOf("mypy", "mypy-extensions"))
+
+ myFixture.configureByFile("${getTestName(true)}/pyproject.toml")
+ myFixture.completeBasic()
+ assertNotEmpty(myFixture.lookupElementStrings)
+ assertContainsElements(myFixture.lookupElementStrings!!, "mypy", "mypy-extensions")
+ }
+
fun testVersionCompletion() {
mockPackageDetails("mypy", listOf("1.7.0", "1.6.1", "1.6.0"))
@@ -39,6 +57,24 @@ class RequirementsCompletionTest : BasePlatformTestCase() {
assertContainsOrdered(myFixture.lookupElementStrings!!, "1.7.0", "1.6.1", "1.6.0")
}
+ fun testVersionInBuildSystemTablePyProjectToml() {
+ mockPackageDetails("mypy", listOf("1.7.0", "1.6.1", "1.6.0"))
+
+ myFixture.configureByFile("${getTestName(true)}/pyproject.toml")
+ myFixture.completeBasic()
+ assertNotEmpty(myFixture.lookupElementStrings)
+ assertContainsOrdered(myFixture.lookupElementStrings!!, "1.7.0", "1.6.1", "1.6.0")
+ }
+
+ fun testVersionInProjectTablePyProjectToml() {
+ mockPackageDetails("mypy", listOf("1.7.0", "1.6.1", "1.6.0"))
+
+ myFixture.configureByFile("${getTestName(true)}/pyproject.toml")
+ myFixture.completeBasic()
+ assertNotEmpty(myFixture.lookupElementStrings)
+ assertContainsOrdered(myFixture.lookupElementStrings!!, "1.7.0", "1.6.1", "1.6.0")
+ }
+
private fun mockPackageNames(packageNames: List) {
val packageManagerProvider = TestPackageManagerProvider().withPackageNames(packageNames)
ExtensionTestUtil.maskExtensions(PythonPackageManagerProvider.EP_NAME, listOf(packageManagerProvider), testRootDisposable)