PY-77884 In user-visible messages, Render PyParamSpecType as **Name instead of ParamSpec('Name')

GitOrigin-RevId: 2819435e6db56045470b0e4dcab95d981645e12a
This commit is contained in:
Mikhail Golubev
2024-12-04 19:59:47 +00:00
committed by intellij-monorepo-bot
parent 95930fc58f
commit 0bd1f6cc71
8 changed files with 15 additions and 16 deletions
@@ -59,7 +59,7 @@ public final class PyParamSpecType implements PyTypeParameterType, PyCallablePar
@NotNull
@Override
public String getName() {
return "ParamSpec(\"" + myName + "\")";
return "**" + myName;
}
@Override
@@ -1,3 +1,3 @@
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Class"/>&nbsp;<code><a href="psi_element://#typename#ConcatenateInGeneric.Y">ConcatenateInGeneric.Y</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#b200b2;">__init__</span><span style="">(</span><span style="color:#94558d;">self</span><span style="">,</span>
<span style="color:#000000;">f</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>Concatenate(int, ParamSpec(&quot;P&quot;))<span style="">)</span> -&gt; U</span><span style="">,</span>
<span style="color:#000000;">f</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>Concatenate(int, **P)<span style="">)</span> -&gt; U</span><span style="">,</span>
<span style="color:#000000;">attr</span><span style="">: </span><span style="color:#000000;">U</span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="color:#000080;font-weight:bold;">None</span></span></pre></div></body></html>
@@ -1 +1 @@
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#ConcatenateInParam">ConcatenateInParam</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">remove</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>Concatenate(int, ParamSpec(&quot;P&quot;))<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="">(</span>ParamSpec(&quot;P&quot;)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#ConcatenateInParam">ConcatenateInParam</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">remove</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>Concatenate(int, **P)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="">(</span>**P<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
@@ -1 +1 @@
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#ConcatenateInReturn">ConcatenateInReturn</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">add</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>ParamSpec(&quot;P&quot;)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="">(</span>Concatenate(str, ParamSpec(&quot;P&quot;))<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#ConcatenateInReturn">ConcatenateInReturn</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">add</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>**P<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="">(</span>Concatenate(str, **P)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
@@ -1,2 +1 @@
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#ConcatenateSeveralFirstParamInParam">ConcatenateSeveralFirstParamInParam</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">remove</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>Concatenate(int, bool, list, ParamSpec(&quot;P&quot;))<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span>
-&gt; <span style="color:#000000;"><span style="">(</span>ParamSpec(&quot;P&quot;)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#ConcatenateSeveralFirstParamInParam">ConcatenateSeveralFirstParamInParam</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">remove</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>Concatenate(int, bool, list, **P)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="">(</span>**P<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
@@ -1,2 +1,2 @@
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#SeveralParamSpecs">SeveralParamSpecs</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">foo</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>ParamSpec(&quot;P&quot;)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">,</span>
<span style="color:#000000;">y</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>ParamSpec(&quot;P&quot;)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="">(</span>ParamSpec(&quot;P&quot;)<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
<html><body><div class="bottom"><icon src="AllIcons.Nodes.Package"/>&nbsp;<code><a href="psi_element://#module#SeveralParamSpecs">SeveralParamSpecs</a></code></div><div class="definition"><pre><span style="color:#000080;font-weight:bold;">def </span><span style="color:#000000;">foo</span><span style="">(</span><span style="color:#000000;">x</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>**P<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">,</span>
<span style="color:#000000;">y</span><span style="">: </span><span style="color:#000000;"><span style="">(</span>**P<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#int">int</a></span></span><span style="">)</span> -&gt; <span style="color:#000000;"><span style="">(</span>**P<span style="">)</span> -&gt; <span style="color:#000080;"><a href="psi_element://#typename#bool">bool</a></span></span></pre></div></body></html>
@@ -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
@@ -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]: