diff --git a/python/src/com/jetbrains/python/documentation/docstrings/SectionBasedDocStringUpdater.java b/python/src/com/jetbrains/python/documentation/docstrings/SectionBasedDocStringUpdater.java index 472efa2f2425..585534a1493d 100644 --- a/python/src/com/jetbrains/python/documentation/docstrings/SectionBasedDocStringUpdater.java +++ b/python/src/com/jetbrains/python/documentation/docstrings/SectionBasedDocStringUpdater.java @@ -94,16 +94,22 @@ public abstract class SectionBasedDocStringUpdater extends DocStringUpdater sectionFields = section.getFields(); + for (SectionField param : sectionFields) { if (param.getName().equals(name)) { - final int startLine, endLine = getFieldEndLine(param); - if (section.getFields().size() == 1) { - startLine = getSectionStartLine(section); + final int endLine = getFieldEndLine(param); + if (sectionFields.size() == 1) { + removeLinesAndSpacesAfter(getSectionStartLine(section), endLine + 1); } else { - startLine = getFieldStartLine(param); + final int startLine = getFieldStartLine(param); + if (ContainerUtil.getLastItem(sectionFields) == param) { + removeLines(startLine, endLine + 1); + } + else { + removeLinesAndSpacesAfter(startLine, endLine + 1); + } } - removeLinesAndSpacesAfter(startLine, endLine + 1); break; } } @@ -177,11 +183,16 @@ public abstract class SectionBasedDocStringUpdater extends DocStringUpdater pos = findPreferredSectionLine(sectionTitle); if (pos.getSecond()) { - builder.addEmptyLine(0); + // don't add extra first empty line in empty docstring + if (!myOriginalDocString.isEmpty(pos.getFirst())) { + builder.addEmptyLine(0); + } insertAfterLine(pos.getFirst(), builder.buildContent(getExpectedSectionIndent(), true)); } else { - builder.addEmptyLine(); + if (!myOriginalDocString.isEmpty(pos.getFirst())) { + builder.addEmptyLine(); + } insertBeforeLine(pos.getFirst(), builder.buildContent(getExpectedSectionIndent(), true)); } } diff --git a/python/testData/inspections/GoogleDocStringAddKeywordVararg_after.py b/python/testData/inspections/GoogleDocStringAddKeywordVararg_after.py index 469a843a6451..d9e705879c76 100644 --- a/python/testData/inspections/GoogleDocStringAddKeywordVararg_after.py +++ b/python/testData/inspections/GoogleDocStringAddKeywordVararg_after.py @@ -1,6 +1,5 @@ def f(**kwargs): """ - Args: **kwargs: """ \ No newline at end of file diff --git a/python/testData/inspections/GoogleDocStringAddParam_after.py b/python/testData/inspections/GoogleDocStringAddParam_after.py index fde8676e956e..aa1e26fdaa62 100644 --- a/python/testData/inspections/GoogleDocStringAddParam_after.py +++ b/python/testData/inspections/GoogleDocStringAddParam_after.py @@ -1,6 +1,5 @@ def f(b): """ - Args: b: """ \ No newline at end of file diff --git a/python/testData/inspections/GoogleDocStringAddPositionalVararg_after.py b/python/testData/inspections/GoogleDocStringAddPositionalVararg_after.py index 64fa019a08d8..6a8042fd12d5 100644 --- a/python/testData/inspections/GoogleDocStringAddPositionalVararg_after.py +++ b/python/testData/inspections/GoogleDocStringAddPositionalVararg_after.py @@ -1,6 +1,5 @@ def f(*args): """ - Args: *args: """ \ No newline at end of file diff --git a/python/testData/inspections/GoogleDocStringRemoveParam.py b/python/testData/inspections/GoogleDocStringRemoveParam.py index 8464d0daeb80..ce9d71d267d7 100644 --- a/python/testData/inspections/GoogleDocStringRemoveParam.py +++ b/python/testData/inspections/GoogleDocStringRemoveParam.py @@ -5,4 +5,7 @@ def foo(): c (int): start of description continuation line 1 continuation line 2 + + Returns: + None """ \ No newline at end of file diff --git a/python/testData/inspections/GoogleDocStringRemoveParam_after.py b/python/testData/inspections/GoogleDocStringRemoveParam_after.py index 03959e0ce5d7..f030c26644d9 100644 --- a/python/testData/inspections/GoogleDocStringRemoveParam_after.py +++ b/python/testData/inspections/GoogleDocStringRemoveParam_after.py @@ -2,4 +2,7 @@ def foo(): """ Parameters: a: foo + + Returns: + None """ \ No newline at end of file diff --git a/python/testData/intentions/afterAddMissingParamsInGoogleDocStringNoParamSection.py b/python/testData/intentions/afterAddMissingParamsInGoogleDocStringNoParamSection.py index 7374843823da..d39babd82abc 100644 --- a/python/testData/intentions/afterAddMissingParamsInGoogleDocStringNoParamSection.py +++ b/python/testData/intentions/afterAddMissingParamsInGoogleDocStringNoParamSection.py @@ -1,6 +1,5 @@ def f(x, y, z): """ - Args: x: y: diff --git a/python/testData/intentions/afterParamTypeInEmptyGoogleDocString.py b/python/testData/intentions/afterParamTypeInEmptyGoogleDocString.py index 949bebf1f55e..0446fcb10aac 100644 --- a/python/testData/intentions/afterParamTypeInEmptyGoogleDocString.py +++ b/python/testData/intentions/afterParamTypeInEmptyGoogleDocString.py @@ -1,6 +1,5 @@ def f(x, y): """ - Args: x (object): """ \ No newline at end of file diff --git a/python/testData/intentions/afterParamTypeInEmptyNumpyDocString.py b/python/testData/intentions/afterParamTypeInEmptyNumpyDocString.py index 072e72b492ea..1d8ab09fdac5 100644 --- a/python/testData/intentions/afterParamTypeInEmptyNumpyDocString.py +++ b/python/testData/intentions/afterParamTypeInEmptyNumpyDocString.py @@ -1,6 +1,5 @@ def f(x, y): """ - Parameters ---------- x : object diff --git a/python/testData/intentions/afterReturnTypeInEmptyGoogleDocString.py b/python/testData/intentions/afterReturnTypeInEmptyGoogleDocString.py index 7e8be4fb80b1..17c07c723182 100644 --- a/python/testData/intentions/afterReturnTypeInEmptyGoogleDocString.py +++ b/python/testData/intentions/afterReturnTypeInEmptyGoogleDocString.py @@ -1,6 +1,5 @@ def f(x, y): """ - Returns: object: """ \ No newline at end of file diff --git a/python/testData/intentions/afterReturnTypeInEmptyNumpyDocString.py b/python/testData/intentions/afterReturnTypeInEmptyNumpyDocString.py index bbcdcef6b056..cb8435f9ce7b 100644 --- a/python/testData/intentions/afterReturnTypeInEmptyNumpyDocString.py +++ b/python/testData/intentions/afterReturnTypeInEmptyNumpyDocString.py @@ -1,6 +1,5 @@ def f(x, y): """ - Returns ------- object