summaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorLisandroDalcin <none@none>2008-09-19 16:28:36 +0200
committerLisandroDalcin <none@none>2008-09-19 16:28:36 +0200
commite04c414ed5579fbbb54c1daf04fc52e534bc66a9 (patch)
tree78765313f57ec0694886089e36ed9c1a0c8fd1ea /Tools
parent2712069ec09278b0c7ebbf216a6a99757420dc10 (diff)
downloadcython-e04c414ed5579fbbb54c1daf04fc52e534bc66a9.tar.gz
Automatic embedding of signatures in docstring (#2)
Diffstat (limited to 'Tools')
-rw-r--r--Tools/cython-epydoc.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/Tools/cython-epydoc.py b/Tools/cython-epydoc.py
new file mode 100644
index 000000000..66e74019e
--- /dev/null
+++ b/Tools/cython-epydoc.py
@@ -0,0 +1,45 @@
+#! /usr/bin/env python
+
+# --------------------------------------------------------------------
+
+import re
+from epydoc import docstringparser as dsp
+
+CYTHON_SIGNATURE_RE = re.compile(
+ # Class name (for builtin methods)
+ r'^\s*((?P<class>\w+)\.)?' +
+ # The function name
+ r'(?P<func>\w+)' +
+ # The parameters
+ r'\(((?P<self>(?:self|cls|mcs)),?)?(?P<params>.*)\)' +
+ # The return value (optional)
+ r'(\s*(->)\s*(?P<return>\w+(?:\s*\w+)))?' +
+ # The end marker
+ r'\s*(?:\n|$)')
+
+parse_signature = dsp.parse_function_signature
+
+def parse_function_signature(func_doc, doc_source,
+ docformat, parse_errors):
+ PYTHON_SIGNATURE_RE = dsp._SIGNATURE_RE
+ assert PYTHON_SIGNATURE_RE is not CYTHON_SIGNATURE_RE
+ try:
+ dsp._SIGNATURE_RE = CYTHON_SIGNATURE_RE
+ found = parse_signature(func_doc, doc_source,
+ docformat, parse_errors)
+ dsp._SIGNATURE_RE = PYTHON_SIGNATURE_RE
+ if not found:
+ found = parse_signature(func_doc, doc_source,
+ docformat, parse_errors)
+ return found
+ finally:
+ dsp._SIGNATURE_RE = PYTHON_SIGNATURE_RE
+
+dsp.parse_function_signature = parse_function_signature
+
+# --------------------------------------------------------------------
+
+from epydoc.cli import cli
+cli()
+
+# --------------------------------------------------------------------