diff options
author | LisandroDalcin <none@none> | 2008-09-19 16:28:36 +0200 |
---|---|---|
committer | LisandroDalcin <none@none> | 2008-09-19 16:28:36 +0200 |
commit | e04c414ed5579fbbb54c1daf04fc52e534bc66a9 (patch) | |
tree | 78765313f57ec0694886089e36ed9c1a0c8fd1ea /Tools | |
parent | 2712069ec09278b0c7ebbf216a6a99757420dc10 (diff) | |
download | cython-e04c414ed5579fbbb54c1daf04fc52e534bc66a9.tar.gz |
Automatic embedding of signatures in docstring (#2)
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/cython-epydoc.py | 45 |
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() + +# -------------------------------------------------------------------- |