From a6d0b050de5fac0668e641f30ac63564ac1b6497 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Fri, 28 Aug 2015 13:04:06 +0300 Subject: [PATCH] PY-4717 Format Numpy docstrings via napoleon and existing rest_formatter script --- python/helpers/numpy_formatter.py | 19 +++++++++++++++++++ .../PyStructuredDocstringFormatter.java | 17 +++++++++++------ 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 python/helpers/numpy_formatter.py diff --git a/python/helpers/numpy_formatter.py b/python/helpers/numpy_formatter.py new file mode 100644 index 000000000000..fbbe0237a60c --- /dev/null +++ b/python/helpers/numpy_formatter.py @@ -0,0 +1,19 @@ +import sys + +from sphinxcontrib.napoleon.docstring import NumpyDocstring + +import rest_formatter + + +def main(text=None): + try: + src = sys.stdin.read() if text is None else text + import textwrap + rest_formatter.main(str(NumpyDocstring(textwrap.dedent(src)))) + except: + exc_type, exc_value, exc_traceback = sys.exc_info() + sys.stderr.write("Error calculating docstring: " + str(exc_value)) + + +if __name__ == '__main__': + main() diff --git a/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java b/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java index 5b680bfe721d..cb1ddf6e0845 100644 --- a/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java +++ b/python/src/com/jetbrains/python/documentation/PyStructuredDocstringFormatter.java @@ -46,7 +46,7 @@ import java.util.Map; * @author yole */ public class PyStructuredDocstringFormatter { - private static final Logger LOG = Logger.getInstance("#com.jetbrains.python.documentation.PyStructuredDocstringFormatter"); + private static final Logger LOG = Logger.getInstance(PyStructuredDocstringFormatter.class); private PyStructuredDocstringFormatter() { } @@ -68,7 +68,15 @@ public class PyStructuredDocstringFormatter { final String formatter; final StructuredDocString structuredDocString; - if (documentationSettings.isEpydocFormat(element.getContainingFile()) || DocStringUtil.isEpydocDocString(preparedDocstring)) { + if (documentationSettings.isGoogleFormat(element.getContainingFile()) || DocStringUtil.isGoogleDocString(preparedDocstring)) { + formatter = PythonHelpersLocator.getHelperPath("google_formatter.py"); + structuredDocString = DocStringUtil.parseDocString(DocStringFormat.GOOGLE, preparedDocstring); + } + else if (documentationSettings.isNumpyFormat(element.getContainingFile()) || DocStringUtil.isNumpyDocstring(preparedDocstring)) { + formatter = PythonHelpersLocator.getHelperPath("numpy_formatter.py"); + structuredDocString = DocStringUtil.parseDocString(DocStringFormat.NUMPY, preparedDocstring); + } + else if (documentationSettings.isEpydocFormat(element.getContainingFile()) || DocStringUtil.isEpydocDocString(preparedDocstring)) { formatter = PythonHelpersLocator.getHelperPath("epydoc_formatter.py"); structuredDocString = DocStringUtil.parseDocString(DocStringFormat.EPYTEXT, preparedDocstring); result.add(formatStructuredDocString(structuredDocString)); @@ -77,10 +85,7 @@ public class PyStructuredDocstringFormatter { formatter = PythonHelpersLocator.getHelperPath("rest_formatter.py"); structuredDocString = DocStringUtil.parseDocString(DocStringFormat.REST, preparedDocstring); } - else if (documentationSettings.isGoogleFormat(element.getContainingFile()) || DocStringUtil.isGoogleDocString(preparedDocstring)) { - formatter = PythonHelpersLocator.getHelperPath("google_formatter.py"); - structuredDocString = DocStringUtil.parseDocString(DocStringFormat.GOOGLE, preparedDocstring); - } + else { return null; }