[py-svn] r38148 - in py/trunk/py/apigen: . testing
guido at codespeak.net
guido at codespeak.net
Thu Feb 8 15:52:51 CET 2007
Author: guido
Date: Thu Feb 8 15:52:49 2007
New Revision: 38148
Modified:
py/trunk/py/apigen/html.py
py/trunk/py/apigen/htmlgen.py
py/trunk/py/apigen/testing/test_apigen_functional.py
Log:
Made that stacks are built on seperate pages instead of inline in the function
information, to avoid having > 5MB pages...
Modified: py/trunk/py/apigen/html.py
==============================================================================
--- py/trunk/py/apigen/html.py (original)
+++ py/trunk/py/apigen/html.py Thu Feb 8 15:52:49 2007
@@ -160,15 +160,13 @@
pass
class CallStackDescription(Description):
- def __init__(self, callstackdiv):
- super(H.CallStackDescription, self).__init__(
- H.Hideable('callsites', 'callsites', csdiv))
+ pass
- class CallStackItem(html.div):
- def __init__(self, filename, lineno, traceback):
- super(H.CallStackItem, self).__init__(
- H.Hideable("stack trace %s - line %s" % (filename, lineno),
- 'callstackitem', traceback))
+ class CallStackLink(html.div):
+ def __init__(self, filename, lineno, href):
+ super(H.CallStackLink, self).__init__(
+ H.a("stack trace %s - line %s" % (filename, lineno),
+ href=href))
class Hideable(html.div):
def __init__(self, name, class_, *content):
Modified: py/trunk/py/apigen/htmlgen.py
==============================================================================
--- py/trunk/py/apigen/htmlgen.py (original)
+++ py/trunk/py/apigen/htmlgen.py Thu Feb 8 15:52:49 2007
@@ -341,13 +341,9 @@
href = self.linker.get_lazyhref(sourcefile)
csource = H.SourceSnippet(text, href, colored)
- callstack = self.dsa.get_function_callpoints(dotted_name)
- csitems = []
- for cs, _ in callstack:
- csitems.append(self.build_callsite(dotted_name, cs))
+ cslinks = self.build_callsites(dotted_name)
snippet = H.FunctionDescription(localname, argdesc, docstring,
- valuedesc, csource, csitems)
-
+ valuedesc, csource, cslinks)
return snippet
def build_class_view(self, dotted_name):
@@ -589,14 +585,30 @@
def is_in_pkg(self, sourcefile):
return py.path.local(sourcefile).relto(self.projpath)
- def build_callsite(self, functionname, call_site):
- tbtag = self.gen_traceback(functionname, reversed(call_site))
- return H.CallStackItem(call_site[0].filename, call_site[0].lineno + 1,
- tbtag)
+ def build_callsites(self, dotted_name):
+ callstack = self.dsa.get_function_callpoints(dotted_name)
+ cslinks = []
+ for i, (cs, _) in enumerate(callstack):
+ link = self.build_callsite(dotted_name, cs, i)
+ cslinks.append(link)
+ return cslinks
+
+ def build_callsite(self, dotted_name, call_site, index):
+ tbtag = self.gen_traceback(dotted_name, reversed(call_site))
+ parent_dotted_name, _ = split_of_last_part(dotted_name)
+ nav = self.build_navigation(parent_dotted_name, False)
+ id = 'callsite_%s_%s' % (dotted_name, index)
+ reltargetpath = "api/%s.html" % (id,)
+ self.linker.set_link(id, reltargetpath)
+ href = self.linker.get_lazyhref(id)
+ self.write_page('call site %s for %s' % (index, dotted_name),
+ reltargetpath, tbtag, nav)
+ return H.CallStackLink(call_site[0].filename, call_site[0].lineno + 1,
+ href)
_reg_source = py.std.re.compile(r'([^>]*)<(.*)>')
- def gen_traceback(self, funcname, call_site):
- tbdiv = H.div()
+ def gen_traceback(self, dotted_name, call_site):
+ tbtag = H.CallStackDescription()
for frame in call_site:
lineno = frame.lineno - frame.firstlineno
source = frame.source
@@ -631,7 +643,7 @@
else:
sourcelink = H.div('source unknown (%s)' % (sourcefile,))
colored = mangled[:]
- tbdiv.append(sourcelink)
- tbdiv.append(H.div(*colored))
- return tbdiv
+ tbtag.append(sourcelink)
+ tbtag.append(H.div(*colored))
+ return tbtag
Modified: py/trunk/py/apigen/testing/test_apigen_functional.py
==============================================================================
--- py/trunk/py/apigen/testing/test_apigen_functional.py (original)
+++ py/trunk/py/apigen/testing/test_apigen_functional.py Thu Feb 8 15:52:49 2007
@@ -100,6 +100,11 @@
exec c in globals()
assert pak.somenamespace._hidden() == 'quux'
+
+ # this just to see a multi-level stack in the docs
+ def foo():
+ return pak.main.sub.func(10)
+ assert foo() is None
"""))
return temp, 'pak'
More information about the pytest-commit
mailing list