diff --git a/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java b/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java index e1c62ce172cc..99f483df8e61 100644 --- a/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java +++ b/python/src/com/jetbrains/python/documentation/PythonDocumentationProvider.java @@ -283,6 +283,12 @@ public class PythonDocumentationProvider extends AbstractDocumentationProvider i result.append(": "); result.append(formatTypeWithLinks(paramType, function, context)); } + final String defaultValue = parameter.getDefaultValueText(); + if (defaultValue != null) { + // According to PEP 8 equal sign should be surrounded by spaces if annotation is present + result.append(showType ? " = " : "="); + result.append(escaped(defaultValue)); + } first = false; } diff --git a/python/testData/quickdoc/DefaultValues.html b/python/testData/quickdoc/DefaultValues.html new file mode 100644 index 000000000000..6e3d079f96e6 --- /dev/null +++ b/python/testData/quickdoc/DefaultValues.html @@ -0,0 +1,4 @@ +
DefaultValues.C
def method(self=42, + foo: List[int] = [1, + 2], + bar: str = "<br/>") -> None
\ No newline at end of file diff --git a/python/testData/quickdoc/DefaultValues.py b/python/testData/quickdoc/DefaultValues.py new file mode 100644 index 000000000000..02bbe0d97fd8 --- /dev/null +++ b/python/testData/quickdoc/DefaultValues.py @@ -0,0 +1,5 @@ +class C: + def method(self=42, foo=[1, + 2], + bar="
"): + pass diff --git a/python/testData/quickdoc/NumPyOnesDoc.html b/python/testData/quickdoc/NumPyOnesDoc.html index 24d2bdb1c1e2..142c11ce2d00 100644 --- a/python/testData/quickdoc/NumPyOnesDoc.html +++ b/python/testData/quickdoc/NumPyOnesDoc.html @@ -1,3 +1,3 @@ -def ones(shape: Union[int, Iterable[int]], dtype: Optional[object], order: Optional[str]) -> ndarray +def ones(shape: Union[int, Iterable[int]], dtype: Optional[object] = None, order: Optional[str] = 'C') -> ndarray **Test docstring** Return a new array of given shape and type, filled with ones. \ No newline at end of file diff --git a/python/testData/quickdoc/OptionalParameterType.html b/python/testData/quickdoc/OptionalParameterType.html index aa353ddcbf5c..371ed817a36d 100644 --- a/python/testData/quickdoc/OptionalParameterType.html +++ b/python/testData/quickdoc/OptionalParameterType.html @@ -1,2 +1,2 @@ -
OptionalParameterType
def open(encoding: Optional[str], - errors: Optional[str]) -> None
\ No newline at end of file +
OptionalParameterType
def open(encoding: Optional[str] = None, + errors: Optional[str] = None) -> None
\ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyQuickDocTest.java b/python/testSrc/com/jetbrains/python/PyQuickDocTest.java index 20444060e131..750cb26a2a25 100644 --- a/python/testSrc/com/jetbrains/python/PyQuickDocTest.java +++ b/python/testSrc/com/jetbrains/python/PyQuickDocTest.java @@ -69,6 +69,7 @@ public class PyQuickDocTest extends LightMarkedTestCase { private void checkHTMLOnly() { final Map marks = loadTest(); final PsiElement originalElement = marks.get(""); + assertNotNull(" marker is missing in test data", originalElement); final DocumentationManager manager = DocumentationManager.getInstance(myFixture.getProject()); final PsiElement target = manager.findTargetElement(myFixture.getEditor(), originalElement.getTextOffset(), @@ -566,6 +567,11 @@ public class PyQuickDocTest extends LightMarkedTestCase { checkHTMLOnly(); } + // PY-31033 + public void testDefaultValues() { + checkHTMLOnly(); + } + @Override protected String getTestDataPath() { return super.getTestDataPath() + "/quickdoc/";