PY-30103 Don't wrap methods with only one parameter apart from self

because in Python it would make all methods that expect an argument,
even as simple as property setters, to wrap.
This commit is contained in:
Mikhail Golubev
2018-06-09 15:59:38 +03:00
parent 9e118e01a9
commit a85cd24d85
11 changed files with 23 additions and 9 deletions
@@ -226,10 +226,12 @@ public class PythonDocumentationProvider extends AbstractDocumentationProvider i
firstParamOffset++;
boolean first = true;
for (PyCallableParameter parameter : function.getParameters(context)) {
boolean firstIsSelf = false;
final List<PyCallableParameter> parameters = function.getParameters(context);
for (PyCallableParameter parameter : parameters) {
if (!first) {
result.append(",");
if (forTooltip) {
if (forTooltip || firstIsSelf && parameters.size() == 2) {
result.append(CommonXmlStrings.NBSP);
}
else {
@@ -239,6 +241,9 @@ public class PythonDocumentationProvider extends AbstractDocumentationProvider i
StringUtil.repeatSymbol(result, ' ', firstParamOffset);
}
}
else {
firstIsSelf = parameter.isSelf();
}
result.append(escaped(StringUtil.notNullize(parameter.getName(), PyNames.UNNAMED_ELEMENT)))
.append(saveSpaces(": "));
result.append(formatTypeWithLinks(parameter.getType(context), function, context));
+1 -1
View File
@@ -1 +1 @@
<html><body><div class='definition'><pre>Property <b>x</b> of <a href="psi_element://#typename#PropNewDeleter.A">PropNewDeleter.A</a><br>@<i>x.deleter</i><br>def&nbsp;<b>x</b>(self:&nbsp;<a href="psi_element://#typename#A">A</a>,<br> v:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Deletes&nbsp;X</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Deleter</td></table></body></html>
<html><body><div class='definition'><pre>Property <b>x</b> of <a href="psi_element://#typename#PropNewDeleter.A">PropNewDeleter.A</a><br>@<i>x.deleter</i><br>def&nbsp;<b>x</b>(self:&nbsp;<a href="psi_element://#typename#A">A</a>,&nbsp;v:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Deletes&nbsp;X</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Deleter</td></table></body></html>
@@ -1 +1 @@
<html><body><div class='definition'><pre>Property <b>m</b> of <a href="psi_element://#typename#PropNewDocstringOfGetter.C">PropNewDocstringOfGetter.C</a><br>@<i>m.setter</i><br>def&nbsp;<b>m</b>(self:&nbsp;<a href="psi_element://#typename#C">C</a>,<br> x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Foo</div><table class='sections'><tr><td valign='top' class='section'><p>Documentation is copied from:</td><td valign='top'>property getter</td><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
<html><body><div class='definition'><pre>Property <b>m</b> of <a href="psi_element://#typename#PropNewDocstringOfGetter.C">PropNewDocstringOfGetter.C</a><br>@<i>m.setter</i><br>def&nbsp;<b>m</b>(self:&nbsp;<a href="psi_element://#typename#C">C</a>,&nbsp;x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Foo</div><table class='sections'><tr><td valign='top' class='section'><p>Documentation is copied from:</td><td valign='top'>property getter</td><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
+1 -1
View File
@@ -1 +1 @@
<html><body><div class='definition'><pre>Property <b>x</b> of <a href="psi_element://#typename#PropNewSetter.A">PropNewSetter.A</a><br>@<i>x.setter</i><br>def&nbsp;<b>x</b>(self:&nbsp;<a href="psi_element://#typename#A">A</a>,<br> v:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Sets&nbsp;X</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
<html><body><div class='definition'><pre>Property <b>x</b> of <a href="psi_element://#typename#PropNewSetter.A">PropNewSetter.A</a><br>@<i>x.setter</i><br>def&nbsp;<b>x</b>(self:&nbsp;<a href="psi_element://#typename#A">A</a>,&nbsp;v:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Sets&nbsp;X</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
@@ -1 +1 @@
<html><body><div class='definition'><pre>Property <b>attr</b> of <a href="psi_element://#typename#PropOldDocParamOfPropertyCall.C">PropOldDocParamOfPropertyCall.C</a><br>def&nbsp;<b>_set</b>(self:&nbsp;<a href="psi_element://#typename#C">C</a>,<br> x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Docstring</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
<html><body><div class='definition'><pre>Property <b>attr</b> of <a href="psi_element://#typename#PropOldDocParamOfPropertyCall.C">PropOldDocParamOfPropertyCall.C</a><br>def&nbsp;<b>_set</b>(self:&nbsp;<a href="psi_element://#typename#C">C</a>,&nbsp;x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Docstring</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
@@ -1 +1 @@
<html><body><div class='definition'><pre>Property <b>attr</b> of <a href="psi_element://#typename#PropOldDocstringOfGetter.C">PropOldDocstringOfGetter.C</a><br>def&nbsp;<b>_set</b>(self:&nbsp;<a href="psi_element://#typename#C">C</a>,<br> x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Getter.</div><table class='sections'><tr><td valign='top' class='section'><p>Documentation is copied from:</td><td valign='top'>property getter</td><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
<html><body><div class='definition'><pre>Property <b>attr</b> of <a href="psi_element://#typename#PropOldDocstringOfGetter.C">PropOldDocstringOfGetter.C</a><br>def&nbsp;<b>_set</b>(self:&nbsp;<a href="psi_element://#typename#C">C</a>,&nbsp;x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Getter.</div><table class='sections'><tr><td valign='top' class='section'><p>Documentation is copied from:</td><td valign='top'>property getter</td><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
+1 -1
View File
@@ -1 +1 @@
<html><body><div class='definition'><pre>Property <b>x</b> of <a href="psi_element://#typename#PropOldSetter.A">PropOldSetter.A</a><br>def&nbsp;<b>__getX</b>(self:&nbsp;<a href="psi_element://#typename#A">A</a>,<br> x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Doc&nbsp;of&nbsp;getter</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
<html><body><div class='definition'><pre>Property <b>x</b> of <a href="psi_element://#typename#PropOldSetter.A">PropOldSetter.A</a><br>def&nbsp;<b>__getX</b>(self:&nbsp;<a href="psi_element://#typename#A">A</a>,&nbsp;x:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div><div class='content'>Doc&nbsp;of&nbsp;getter</div><table class='sections'><tr><td valign='top' class='section'><p>Accessor kind:</td><td valign='top'>Setter</td></table></body></html>
@@ -1 +1 @@
<html><body><div class='definition'><pre><a href="psi_element://#typename#list">list</a><br>def&nbsp;<b>count</b>(self:&nbsp;<a href="psi_element://#typename#list">list</a>,<br> object:&nbsp;_T)&nbsp;-&gt;&nbsp;<a href="psi_element://#typename#int">int</a></pre></div><div class='content'>L.count(value)&nbsp;-&gt;&nbsp;integer&nbsp;--&nbsp;return&nbsp;number&nbsp;of&nbsp;occurrences&nbsp;of&nbsp;value</div><table class='sections'><tr><td valign='top' class='section'><p>Assigned to:</td><td valign='top'><code>c1</code></td></table></body></html>
<html><body><div class='definition'><pre><a href="psi_element://#typename#list">list</a><br>def&nbsp;<b>count</b>(self:&nbsp;<a href="psi_element://#typename#list">list</a>,&nbsp;object:&nbsp;_T)&nbsp;-&gt;&nbsp;<a href="psi_element://#typename#int">int</a></pre></div><div class='content'>L.count(value)&nbsp;-&gt;&nbsp;integer&nbsp;--&nbsp;return&nbsp;number&nbsp;of&nbsp;occurrences&nbsp;of&nbsp;value</div><table class='sections'><tr><td valign='top' class='section'><p>Assigned to:</td><td valign='top'><code>c1</code></td></table></body></html>
@@ -0,0 +1 @@
<html><body><div class='definition'><pre><a href="psi_element://#typename#SingleArgumentMethodNotWrapped.MyClass">SingleArgumentMethodNotWrapped.MyClass</a><br>def&nbsp;<b>method</b>(self:&nbsp;<a href="psi_element://#typename#MyClass">MyClass</a>,&nbsp;param:&nbsp;Any)&nbsp;-&gt;&nbsp;None</pre></div></body></html>
@@ -0,0 +1,3 @@
class MyClass:
def met<the_ref>hod(self, param):
pass
@@ -460,6 +460,11 @@ public class PyQuickDocTest extends LightMarkedTestCase {
runWithLanguageLevel(LanguageLevel.PYTHON35, this::checkHTMLOnly);
}
// PY-30103
public void testSingleArgumentMethodNotWrapped() {
checkHTMLOnly();
}
// PY-30103
public void testReturnTypeWrappedBecauseTooLongItself() {
runWithLanguageLevel(LanguageLevel.PYTHON35, this::checkHTMLOnly);