Also I removed "Params" title, since Napoleon doesn't support it and
can't render such sections.
Titles that contain multiple words are capitalized on ever word.
Actual set of headers is based on the following user suggestion:
https://youtrack.jetbrains.com/issue/PY-9795#comment=27-
1122111.
final TextRange linePrefixRange = new TextRange(document.getLineStartOffset(document.getLineNumber(offset)), offset);
final String prefix = StringUtil.trimLeading(document.getText(linePrefixRange));
result = result.withPrefixMatcher(prefix).caseInsensitive();
- for (String tag : SectionBasedDocString.SECTION_NAMES) {
- result.addElement(LookupElementBuilder.create(StringUtil.capitalize(tag)));
+ final Iterable<String> names = format == DocStringFormat.GOOGLE ? GoogleCodeStyleDocString.PREFERRED_SECTION_HEADERS
+ : NumpyDocString.PREFERRED_SECTION_HEADERS;
+ for (String tag : names) {
+ result.addElement(LookupElementBuilder.create(tag));
}
}
});
*/
package com.jetbrains.python.documentation.docstrings;
+import com.google.common.collect.ImmutableList;
import com.intellij.openapi.util.Pair;
import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.python.toolbox.Substring;
public static final Pattern SECTION_HEADER = Pattern.compile("^[ \t]*([\\w \t]+):[ \t]*$", Pattern.MULTILINE);
private static final Pattern FIELD_NAME_AND_TYPE = Pattern.compile("^[ \t]*(.+?)[ \t]*\\([ \t]*(.*?)[ \t]*\\)?[ \t]*$", Pattern.MULTILINE);
+ public static final List<String> PREFERRED_SECTION_HEADERS = ImmutableList.of("Args",
+ "Keyword Args",
+ "Returns",
+ "Yields",
+ "Raises",
+ "Attributes",
+ "See Also",
+ "Methods",
+ "References",
+ "Examples",
+ "Notes",
+ "Warnings");
+
public GoogleCodeStyleDocString(@NotNull Substring text) {
super(text);
}
*/
package com.jetbrains.python.documentation.docstrings;
+import com.google.common.collect.ImmutableList;
import com.intellij.openapi.util.Pair;
import com.jetbrains.python.toolbox.Substring;
import org.jetbrains.annotations.NonNls;
private static final Pattern NAME_SEPARATOR = Pattern.compile("[ \t]*,[ \t]*");
public static final Pattern SECTION_HEADER = Pattern.compile("^[ \t]*[-=]{2,}[ \t]*$", Pattern.MULTILINE);
+ public static final List<String> PREFERRED_SECTION_HEADERS = ImmutableList.of("Parameters",
+ "Other Parameters",
+ "Returns",
+ "Yields",
+ "Raises",
+ "Attributes",
+ "See Also",
+ "Methods",
+ "References",
+ "Examples",
+ "Notes",
+ "Warnings");
+
private Substring mySignature;
+
public NumpyDocString(@NotNull Substring text) {
super(text);
}
.put("arguments", PARAMETERS_SECTION)
.put("args", PARAMETERS_SECTION)
.put("parameters", PARAMETERS_SECTION)
- .put("params", PARAMETERS_SECTION)
.put("keyword args", KEYWORD_ARGUMENTS_SECTION)
.put("keyword arguments", KEYWORD_ARGUMENTS_SECTION)
.put("other parameters", OTHER_PARAMETERS_SECTION)
--- /dev/null
+def f(x):
+ """
+ Args:
+ x:
+
+ Returns:
+ """
\ No newline at end of file
--- /dev/null
+def f():
+ """
+ <caret>
+ """
def f():
"""
- Keyword arguments:
+ Keyword Args:
"""
\ No newline at end of file
def f():
"""
- Keyword argu<caret>:
+ Keyword ar<caret>:
"""
\ No newline at end of file
def f(x):
"""
- Params:
+ Parameters:
x: foo
"""
\ No newline at end of file
def foo(a, <weak_warning descr="Missing parameter c in docstring">c</weak_warning>):
"""
- Params:
+ Parameters:
a:
<weak_warning descr="Unexpected parameter b in docstring">b</weak_warning>:
"""
def f(a, d):
"""
- Params:
+ Parameters:
a : foo
d : quux
"""
\ No newline at end of file
def f(a, b, c, d):
"""
- Params:
+ Parameters:
a : foo
b : bar
c : baz
// PY-16877
public void testSectionNamesInGoogleDocstring() {
runWithDocStringFormat(DocStringFormat.GOOGLE, new Runnable() {
+ @Override
+ public void run() {
+ final List<String> variants = doTestByFile();
+ assertNotNull(variants);
+ assertContainsElements(variants, "Args", "Keyword Args", "Returns");
+ assertDoesntContain(variants, "Parameters", "Return", "Yield");
+ }
+ });
+ }
+
+ // PY-17023
+ public void testSectionNamesInNumpyDocstrings() {
+ runWithDocStringFormat(DocStringFormat.NUMPY, new Runnable() {
+ @Override
public void run() {
final List<String> variants = doTestByFile();
assertNotNull(variants);
- assertContainsElements(variants, "Args", "Parameters", "Keyword arguments", "Returns");
+ assertContainsElements(variants, "Parameters", "Other Parameters", "Returns");
+ assertDoesntContain(variants, "Args", "Return", "Yield");
}
});
}
runWithDocStringFormat(DocStringFormat.GOOGLE, new Runnable() {
@Override
public void run() {
- final List<String> variants = doTestByFile();
- assertNotNull(variants);
- assertContainsElements(variants, "Return", "Returns");
+ doTest();
}
});
}