xref: /petsc/src/binding/petsc4py/conf/epydocify.py (revision 5808f68492579297331054bd8ff190489c3b8c20)
1*5808f684SSatish Balay#!/usr/bin/env python
2*5808f684SSatish Balay
3*5808f684SSatish Balay# --------------------------------------------------------------------
4*5808f684SSatish Balay
5*5808f684SSatish Balayfrom petsc4py import PETSc
6*5808f684SSatish Balay
7*5808f684SSatish Balay# --------------------------------------------------------------------
8*5808f684SSatish Balay
9*5808f684SSatish Balaytry:
10*5808f684SSatish Balay    from docutils.nodes import NodeVisitor
11*5808f684SSatish Balay    NodeVisitor.unknown_visit = lambda self, node: None
12*5808f684SSatish Balay    NodeVisitor.unknown_departure =  lambda self, node: None
13*5808f684SSatish Balayexcept ImportError:
14*5808f684SSatish Balay    pass
15*5808f684SSatish Balay
16*5808f684SSatish Balaytry: # epydoc 3.0.1 + docutils 0.6
17*5808f684SSatish Balay    from docutils.nodes import Text
18*5808f684SSatish Balay    from UserString import UserString
19*5808f684SSatish Balay    if not isinstance(Text, UserString):
20*5808f684SSatish Balay        def Text_get_data(s):
21*5808f684SSatish Balay            try:
22*5808f684SSatish Balay                return s._data
23*5808f684SSatish Balay            except AttributeError:
24*5808f684SSatish Balay                return s.astext()
25*5808f684SSatish Balay        def Text_set_data(s, d):
26*5808f684SSatish Balay            s.astext = lambda: d
27*5808f684SSatish Balay            s._data = d
28*5808f684SSatish Balay        Text.data = property(Text_get_data, Text_set_data)
29*5808f684SSatish Balayexcept ImportError:
30*5808f684SSatish Balay    pass
31*5808f684SSatish Balay
32*5808f684SSatish Balay# --------------------------------------------------------------------
33*5808f684SSatish Balay
34*5808f684SSatish Balayfrom epydoc.docwriter import dotgraph
35*5808f684SSatish Balay
36*5808f684SSatish Balayimport re
37*5808f684SSatish Balaydotgraph._DOT_VERSION_RE = \
38*5808f684SSatish Balay    re.compile(r'dot (?:- Graphviz )version ([\d\.]+)')
39*5808f684SSatish Balay
40*5808f684SSatish Balaytry:
41*5808f684SSatish Balay
42*5808f684SSatish Balay    dotgraph.DotGraph.DEFAULT_HTML_IMAGE_FORMAT
43*5808f684SSatish Balay    dotgraph.DotGraph.DEFAULT_HTML_IMAGE_FORMAT = 'png'
44*5808f684SSatish Balay
45*5808f684SSatish Balayexcept AttributeError:
46*5808f684SSatish Balay
47*5808f684SSatish Balay    DotGraph_to_html = dotgraph.DotGraph.to_html
48*5808f684SSatish Balay    DotGraph_run_dot = dotgraph.DotGraph._run_dot
49*5808f684SSatish Balay
50*5808f684SSatish Balay    def to_html(self, image_file, image_url, center=True):
51*5808f684SSatish Balay        if image_file[-4:] == '.gif':
52*5808f684SSatish Balay            image_file = image_file[:-4] + '.png'
53*5808f684SSatish Balay        if image_url[-4:] == '.gif':
54*5808f684SSatish Balay            image_url = image_url[:-4] +  '.png'
55*5808f684SSatish Balay        return DotGraph_to_html(self, image_file, image_url)
56*5808f684SSatish Balay
57*5808f684SSatish Balay    def _run_dot(self, *options):
58*5808f684SSatish Balay        if '-Tgif' in options:
59*5808f684SSatish Balay            opts = list(options)
60*5808f684SSatish Balay            for i, o in enumerate(opts):
61*5808f684SSatish Balay                if o == '-Tgif': opts[i] = '-Tpng'
62*5808f684SSatish Balay            options = type(options)(opts)
63*5808f684SSatish Balay        return DotGraph_run_dot(self, *options)
64*5808f684SSatish Balay
65*5808f684SSatish Balay    dotgraph.DotGraph.to_html = to_html
66*5808f684SSatish Balay    dotgraph.DotGraph._run_dot = _run_dot
67*5808f684SSatish Balay
68*5808f684SSatish Balay# --------------------------------------------------------------------
69*5808f684SSatish Balay
70*5808f684SSatish Balayimport re
71*5808f684SSatish Balay
72*5808f684SSatish Balay_SIGNATURE_RE = re.compile(
73*5808f684SSatish Balay    # Class name (for builtin methods)
74*5808f684SSatish Balay    r'^\s*((?P<class>\w+)\.)?' +
75*5808f684SSatish Balay    # The function name
76*5808f684SSatish Balay    r'(?P<func>\w+)' +
77*5808f684SSatish Balay    # The parameters
78*5808f684SSatish Balay    r'\(((?P<self>(?:self|cls|mcs)),?)?(?P<params>.*)\)' +
79*5808f684SSatish Balay    # The return value (optional)
80*5808f684SSatish Balay    r'(\s*(->)\s*(?P<return>\S.*?))?'+
81*5808f684SSatish Balay    # The end marker
82*5808f684SSatish Balay    r'\s*(\n|\s+(--|<=+>)\s+|$|\.\s+|\.\n)')
83*5808f684SSatish Balay
84*5808f684SSatish Balayfrom epydoc import docstringparser as dsp
85*5808f684SSatish Balaydsp._SIGNATURE_RE = _SIGNATURE_RE
86*5808f684SSatish Balay
87*5808f684SSatish Balay# --------------------------------------------------------------------
88*5808f684SSatish Balay
89*5808f684SSatish Balayimport sys, os
90*5808f684SSatish Balayimport epydoc.cli
91*5808f684SSatish Balay
92*5808f684SSatish Balaydef epydocify():
93*5808f684SSatish Balay    dirname = os.path.dirname(__file__)
94*5808f684SSatish Balay    config = os.path.join(dirname, 'epydoc.cfg')
95*5808f684SSatish Balay    sys.argv.append('--config=' + config)
96*5808f684SSatish Balay    epydoc.cli.cli()
97*5808f684SSatish Balay
98*5808f684SSatish Balayif __name__ == '__main__':
99*5808f684SSatish Balay    epydocify()
100*5808f684SSatish Balay
101*5808f684SSatish Balay# --------------------------------------------------------------------
102