xref: /petsc/src/binding/petsc4py/conf/epydocify.py (revision 1b37a2a7cc4a4fb30c3e967db1c694c0a1013f51)
1*1b37a2a7SPierre Jolivet#!/usr/bin/env python3
25808f684SSatish Balay
35808f684SSatish Balay# --------------------------------------------------------------------
45808f684SSatish Balay
55808f684SSatish Balayfrom petsc4py import PETSc
65808f684SSatish Balay
75808f684SSatish Balay# --------------------------------------------------------------------
85808f684SSatish Balay
95808f684SSatish Balaytry:
105808f684SSatish Balay    from docutils.nodes import NodeVisitor
115808f684SSatish Balay    NodeVisitor.unknown_visit = lambda self, node: None
125808f684SSatish Balay    NodeVisitor.unknown_departure =  lambda self, node: None
135808f684SSatish Balayexcept ImportError:
145808f684SSatish Balay    pass
155808f684SSatish Balay
165808f684SSatish Balaytry: # epydoc 3.0.1 + docutils 0.6
175808f684SSatish Balay    from docutils.nodes import Text
185808f684SSatish Balay    from UserString import UserString
195808f684SSatish Balay    if not isinstance(Text, UserString):
205808f684SSatish Balay        def Text_get_data(s):
215808f684SSatish Balay            try:
225808f684SSatish Balay                return s._data
235808f684SSatish Balay            except AttributeError:
245808f684SSatish Balay                return s.astext()
255808f684SSatish Balay        def Text_set_data(s, d):
265808f684SSatish Balay            s.astext = lambda: d
275808f684SSatish Balay            s._data = d
285808f684SSatish Balay        Text.data = property(Text_get_data, Text_set_data)
295808f684SSatish Balayexcept ImportError:
305808f684SSatish Balay    pass
315808f684SSatish Balay
325808f684SSatish Balay# --------------------------------------------------------------------
335808f684SSatish Balay
345808f684SSatish Balayfrom epydoc.docwriter import dotgraph
355808f684SSatish Balay
365808f684SSatish Balayimport re
375808f684SSatish Balaydotgraph._DOT_VERSION_RE = \
385808f684SSatish Balay    re.compile(r'dot (?:- Graphviz )version ([\d\.]+)')
395808f684SSatish Balay
405808f684SSatish Balaytry:
415808f684SSatish Balay
425808f684SSatish Balay    dotgraph.DotGraph.DEFAULT_HTML_IMAGE_FORMAT
435808f684SSatish Balay    dotgraph.DotGraph.DEFAULT_HTML_IMAGE_FORMAT = 'png'
445808f684SSatish Balay
455808f684SSatish Balayexcept AttributeError:
465808f684SSatish Balay
475808f684SSatish Balay    DotGraph_to_html = dotgraph.DotGraph.to_html
485808f684SSatish Balay    DotGraph_run_dot = dotgraph.DotGraph._run_dot
495808f684SSatish Balay
505808f684SSatish Balay    def to_html(self, image_file, image_url, center=True):
515808f684SSatish Balay        if image_file[-4:] == '.gif':
525808f684SSatish Balay            image_file = image_file[:-4] + '.png'
535808f684SSatish Balay        if image_url[-4:] == '.gif':
545808f684SSatish Balay            image_url = image_url[:-4] +  '.png'
555808f684SSatish Balay        return DotGraph_to_html(self, image_file, image_url)
565808f684SSatish Balay
575808f684SSatish Balay    def _run_dot(self, *options):
585808f684SSatish Balay        if '-Tgif' in options:
595808f684SSatish Balay            opts = list(options)
605808f684SSatish Balay            for i, o in enumerate(opts):
615808f684SSatish Balay                if o == '-Tgif': opts[i] = '-Tpng'
625808f684SSatish Balay            options = type(options)(opts)
635808f684SSatish Balay        return DotGraph_run_dot(self, *options)
645808f684SSatish Balay
655808f684SSatish Balay    dotgraph.DotGraph.to_html = to_html
665808f684SSatish Balay    dotgraph.DotGraph._run_dot = _run_dot
675808f684SSatish Balay
685808f684SSatish Balay# --------------------------------------------------------------------
695808f684SSatish Balay
705808f684SSatish Balayimport re
715808f684SSatish Balay
725808f684SSatish Balay_SIGNATURE_RE = re.compile(
735808f684SSatish Balay    # Class name (for builtin methods)
745808f684SSatish Balay    r'^\s*((?P<class>\w+)\.)?' +
755808f684SSatish Balay    # The function name
765808f684SSatish Balay    r'(?P<func>\w+)' +
775808f684SSatish Balay    # The parameters
785808f684SSatish Balay    r'\(((?P<self>(?:self|cls|mcs)),?)?(?P<params>.*)\)' +
795808f684SSatish Balay    # The return value (optional)
805808f684SSatish Balay    r'(\s*(->)\s*(?P<return>\S.*?))?'+
815808f684SSatish Balay    # The end marker
825808f684SSatish Balay    r'\s*(\n|\s+(--|<=+>)\s+|$|\.\s+|\.\n)')
835808f684SSatish Balay
845808f684SSatish Balayfrom epydoc import docstringparser as dsp
855808f684SSatish Balaydsp._SIGNATURE_RE = _SIGNATURE_RE
865808f684SSatish Balay
875808f684SSatish Balay# --------------------------------------------------------------------
885808f684SSatish Balay
895808f684SSatish Balayimport sys, os
905808f684SSatish Balayimport epydoc.cli
915808f684SSatish Balay
925808f684SSatish Balaydef epydocify():
935808f684SSatish Balay    dirname = os.path.dirname(__file__)
945808f684SSatish Balay    config = os.path.join(dirname, 'epydoc.cfg')
955808f684SSatish Balay    sys.argv.append('--config=' + config)
965808f684SSatish Balay    epydoc.cli.cli()
975808f684SSatish Balay
985808f684SSatish Balayif __name__ == '__main__':
995808f684SSatish Balay    epydocify()
1005808f684SSatish Balay
1015808f684SSatish Balay# --------------------------------------------------------------------
102