diff --git a/py/apigen/html.py b/py/apigen/html.py
index 0d7ef9bbf..2bff63275 100644
--- a/py/apigen/html.py
+++ b/py/apigen/html.py
@@ -56,8 +56,8 @@ class H(html):
pass
class FunctionDescription(Description):
- def __init__(self, localname, argdesc, docstring, valuedesc, csource,
- callstack):
+ def __init__(self, localname, argdesc, docstring, valuedesc, excdesc,
+ csource, callstack):
infoid = 'info_%s' % (localname.replace('.', '_dot_'),)
docstringid = 'docstring_%s' % (localname.replace('.', '_dot_'),)
fd = H.FunctionDef(localname, argdesc,
@@ -68,7 +68,7 @@ class H(html):
infodiv = H.div(
H.Docstring(docstring or '*no docstring available*',
id=docstringid),
- H.FunctionInfo(valuedesc, csource, callstack,
+ H.FunctionInfo(valuedesc, excdesc, csource, callstack,
id=infoid, style="display: none"),
class_='funcdocinfo')
super(H.FunctionDescription, self).__init__(fd, infodiv)
@@ -81,8 +81,9 @@ class H(html):
class_=class_, **kwargs)
class FunctionInfo(html.div):
- def __init__(self, valuedesc, csource, callstack, **kwargs):
- super(H.FunctionInfo, self).__init__(valuedesc, H.br(), csource,
+ def __init__(self, valuedesc, excdesc, csource, callstack, **kwargs):
+ super(H.FunctionInfo, self).__init__(valuedesc, H.br(), excdesc,
+ H.br(), csource,
callstack, class_='funcinfo',
**kwargs)
@@ -183,6 +184,13 @@ class H(html):
def __init__(self, *args, **kwargs):
super(H.ValueDescList, self).__init__(*args, **kwargs)
+ class ExceptionDescList(html.ul):
+ def __init__(self, *args, **kwargs):
+ super(H.ExceptionDescList, self).__init__(*args, **kwargs)
+
+ def append(self, t):
+ super(H.ExceptionDescList, self).append(html.li(t))
+
class ValueDescItem(html.li):
pass
diff --git a/py/apigen/htmlgen.py b/py/apigen/htmlgen.py
index 72aa7fb54..cef17be00 100644
--- a/py/apigen/htmlgen.py
+++ b/py/apigen/htmlgen.py
@@ -412,6 +412,7 @@ class ApiPageBuilder(AbstractPageBuilder):
docstring = deindent(docstring)
localname = func.__name__
argdesc = get_param_htmldesc(self.linker, func)
+ excdesc = self.build_exception_description(dotted_name)
valuedesc = self.build_callable_signature_description(dotted_name)
sourcefile = inspect.getsourcefile(func)
@@ -423,11 +424,9 @@ class ApiPageBuilder(AbstractPageBuilder):
colored = []
if sourcefile and callable_source:
enc = source_html.get_module_encoding(sourcefile)
- tokenizer = source_color.Tokenizer(source_color.PythonSchema)
- firstlineno = func.func_code.co_firstlineno
sep = get_linesep(callable_source)
- org = callable_source.split(sep)
- colored = [enumerate_and_color(org, firstlineno, enc)]
+ colored = [enumerate_and_color(callable_source.split(sep),
+ func.func_code.co_firstlineno, enc)]
relpath = get_rel_sourcepath(self.projroot, sourcefile, sourcefile)
text = 'source: %s' % (relpath,)
if is_in_pkg:
@@ -436,7 +435,7 @@ class ApiPageBuilder(AbstractPageBuilder):
csource = H.SourceSnippet(text, href, colored)
cslinks = self.build_callsites(dotted_name)
snippet = H.FunctionDescription(localname, argdesc, docstring,
- valuedesc, csource, cslinks)
+ valuedesc, excdesc, csource, cslinks)
return snippet
def build_class_view(self, dotted_name):
@@ -697,6 +696,14 @@ class ApiPageBuilder(AbstractPageBuilder):
lst.append(name)
return lst
+ def build_exception_description(self, dotted_name):
+ excs = self.dsa.get_function_exceptions(dotted_name)
+ excdesc = H.ExceptionDescList()
+ for exc in excs:
+ excdesc.append(exc)
+ ret = H.div(H.div('possible exceptions:'), excdesc)
+ return ret
+
def is_in_pkg(self, sourcefile):
return py.path.local(sourcefile).relto(self.projpath)