Index: third_party/cython/src/Tools/cython-epydoc.py |
diff --git a/third_party/cython/src/Tools/cython-epydoc.py b/third_party/cython/src/Tools/cython-epydoc.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..66e74019e19a3ead04a919feb7346b60ba2dbd21 |
--- /dev/null |
+++ b/third_party/cython/src/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() |
+ |
+# -------------------------------------------------------------------- |