diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyParamSpecType.java b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyParamSpecType.java index b6e377df9b7a..2098b910b703 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyParamSpecType.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/types/PyParamSpecType.java @@ -59,7 +59,7 @@ public final class PyParamSpecType implements PyTypeParameterType, PyCallablePar @NotNull @Override public String getName() { - return "ParamSpec(\"" + myName + "\")"; + return "**" + myName; } @Override diff --git a/python/testData/quickdoc/ConcatenateInGeneric.html b/python/testData/quickdoc/ConcatenateInGeneric.html index 5deb5076043b..e368c1d52239 100644 --- a/python/testData/quickdoc/ConcatenateInGeneric.html +++ b/python/testData/quickdoc/ConcatenateInGeneric.html @@ -1,3 +1,3 @@
 ConcatenateInGeneric.Y
def __init__(self,
-             f: (Concatenate(int, ParamSpec("P"))) -> U,
+             f: (Concatenate(int, **P)) -> U,
              attr: U) -> None
\ No newline at end of file diff --git a/python/testData/quickdoc/ConcatenateInParam.html b/python/testData/quickdoc/ConcatenateInParam.html index 0534ab7f6ebe..2d7ee833f62f 100644 --- a/python/testData/quickdoc/ConcatenateInParam.html +++ b/python/testData/quickdoc/ConcatenateInParam.html @@ -1 +1 @@ -
 ConcatenateInParam
def remove(x: (Concatenate(int, ParamSpec("P"))) -> int) -> (ParamSpec("P")) -> bool
\ No newline at end of file +
 ConcatenateInParam
def remove(x: (Concatenate(int, **P)) -> int) -> (**P) -> bool
\ No newline at end of file diff --git a/python/testData/quickdoc/ConcatenateInReturn.html b/python/testData/quickdoc/ConcatenateInReturn.html index cf1d05ce8280..9193ad7d5409 100644 --- a/python/testData/quickdoc/ConcatenateInReturn.html +++ b/python/testData/quickdoc/ConcatenateInReturn.html @@ -1 +1 @@ -
 ConcatenateInReturn
def add(x: (ParamSpec("P")) -> int) -> (Concatenate(str, ParamSpec("P"))) -> bool
\ No newline at end of file +
 ConcatenateInReturn
def add(x: (**P) -> int) -> (Concatenate(str, **P)) -> bool
\ No newline at end of file diff --git a/python/testData/quickdoc/ConcatenateSeveralFirstParamInParam.html b/python/testData/quickdoc/ConcatenateSeveralFirstParamInParam.html index 8871e45eda3d..47d46555a4ea 100644 --- a/python/testData/quickdoc/ConcatenateSeveralFirstParamInParam.html +++ b/python/testData/quickdoc/ConcatenateSeveralFirstParamInParam.html @@ -1,2 +1 @@ -
 ConcatenateSeveralFirstParamInParam
def remove(x: (Concatenate(int, bool, list, ParamSpec("P"))) -> int)
-  -> (ParamSpec("P")) -> bool
\ No newline at end of file +
 ConcatenateSeveralFirstParamInParam
def remove(x: (Concatenate(int, bool, list, **P)) -> int) -> (**P) -> bool
\ No newline at end of file diff --git a/python/testData/quickdoc/SeveralParamSpecs.html b/python/testData/quickdoc/SeveralParamSpecs.html index f857d44f8e82..da11678d1ac5 100644 --- a/python/testData/quickdoc/SeveralParamSpecs.html +++ b/python/testData/quickdoc/SeveralParamSpecs.html @@ -1,2 +1,2 @@ -
 SeveralParamSpecs
def foo(x: (ParamSpec("P")) -> int,
-        y: (ParamSpec("P")) -> int) -> (ParamSpec("P")) -> bool
\ No newline at end of file +
 SeveralParamSpecs
def foo(x: (**P) -> int,
+        y: (**P) -> int) -> (**P) -> bool
\ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/Py3TypeTest.java b/python/testSrc/com/jetbrains/python/Py3TypeTest.java index e999273d8836..8b135dee2803 100644 --- a/python/testSrc/com/jetbrains/python/Py3TypeTest.java +++ b/python/testSrc/com/jetbrains/python/Py3TypeTest.java @@ -1276,7 +1276,7 @@ public class Py3TypeTest extends PyTestCase { } public void testParamSpecArgsKwargsInAnnotations() { - doTest("(c: (ParamSpec(\"P\")) -> int, ParamSpec(\"P\"), ParamSpec(\"P\")) -> None", """ + doTest("(c: (**P) -> int, **P, **P) -> None", """ from typing import Callable, ParamSpec P = ParamSpec('P') @@ -1289,7 +1289,7 @@ public class Py3TypeTest extends PyTestCase { } public void testParamSpecArgsKwargsInTypeComments() { - doTest("(c: (ParamSpec(\"P\")) -> int, ParamSpec(\"P\"), ParamSpec(\"P\")) -> None", """ + doTest("(c: (**P) -> int, **P, **P) -> None", """ from typing import Callable, ParamSpec P = ParamSpec('P') @@ -1306,7 +1306,7 @@ public class Py3TypeTest extends PyTestCase { } public void testParamSpecArgsKwargsInFunctionTypeComment() { - doTest("(c: (ParamSpec(\"P\")) -> int, ParamSpec(\"P\"), ParamSpec(\"P\")) -> None", """ + doTest("(c: (**P) -> int, **P, **P) -> None", """ from typing import Callable, ParamSpec P = ParamSpec('P') @@ -1320,7 +1320,7 @@ public class Py3TypeTest extends PyTestCase { } public void testParamSpecArgsKwargsInImportedFile() { - doMultiFileTest("(c: (ParamSpec(\"P\")) -> int, ParamSpec(\"P\"), ParamSpec(\"P\")) -> None", """ + doMultiFileTest("(c: (**P) -> int, **P, **P) -> None", """ from mod import func expr = func diff --git a/python/testSrc/com/jetbrains/python/PyTypingTest.java b/python/testSrc/com/jetbrains/python/PyTypingTest.java index 84c4482fa77e..b7350d777f7d 100644 --- a/python/testSrc/com/jetbrains/python/PyTypingTest.java +++ b/python/testSrc/com/jetbrains/python/PyTypingTest.java @@ -4523,7 +4523,7 @@ public class PyTypingTest extends PyTestCase { // PY-70484 public void testUnboundParamSpecThatCannotBeBoundThroughParametersLeftIntact() { - doTest("((ParamSpec(\"P\")) -> Any) -> (ParamSpec(\"P\")) -> int", + doTest("((**P) -> Any) -> (**P) -> int", """ from typing import Callable, Any, ParamSpec @@ -4556,7 +4556,7 @@ public class PyTypingTest extends PyTestCase { } public void testParamSpecInConcatenateMappedToAnotherParamSpec() { - doTest("(int, ParamSpec(\"P1\")) -> Any", + doTest("(int, **P1) -> Any", """ from typing import Callable, Any, ParamSpec, Concatenate @@ -6165,7 +6165,7 @@ public class PyTypingTest extends PyTestCase { // PY-77541 public void testParamSpecBoundToAnotherParamSpecInCustomGeneric() { - doTest("MyCallable[ParamSpec(\"P2\"), R2]", """ + doTest("MyCallable[**P2, R2]", """ class MyCallable[**P, R]: def __call__(self, *args: P.args, **kwargs: P.kwargs): ... @@ -6180,7 +6180,7 @@ public class PyTypingTest extends PyTestCase { // PY-77541 public void testParamSpecBoundToConcatenateInCustomGeneric() { - doTest("MyCallable[Concatenate(int, ParamSpec(\"P2\")), R2]", """ + doTest("MyCallable[Concatenate(int, **P2), R2]", """ from typing import Concatenate class MyCallable[**P, R]: