[py-svn] r36498 - in py/dist/py/apigen: . rest/testing source source/testing testing tracer

guido at codespeak.net guido at codespeak.net
Thu Jan 11 16:20:05 CET 2007


Author: guido
Date: Thu Jan 11 16:19:54 2007
New Revision: 36498

Added:
   py/dist/py/apigen/htmlgen.py   (contents, props changed)
   py/dist/py/apigen/testing/test_apigen_example.py   (contents, props changed)
Modified:
   py/dist/py/apigen/linker.py   (props changed)
   py/dist/py/apigen/rest/testing/test_htmlhandlers.py   (props changed)
   py/dist/py/apigen/source/color.py   (props changed)
   py/dist/py/apigen/source/path.py   (props changed)
   py/dist/py/apigen/source/testing/test_color.py   (props changed)
   py/dist/py/apigen/testing/   (props changed)
   py/dist/py/apigen/testing/__init__.py   (props changed)
   py/dist/py/apigen/testing/test_linker.py   (props changed)
   py/dist/py/apigen/tracer/docstorage.py
   py/dist/py/apigen/tracer/permastore.py   (props changed)
Log:
(hpk, guido) added first bits of html generation, fixeol


Added: py/dist/py/apigen/htmlgen.py
==============================================================================
--- (empty file)
+++ py/dist/py/apigen/htmlgen.py	Thu Jan 11 16:19:54 2007
@@ -0,0 +1,35 @@
+import py
+
+html = py.xml.html
+class H(html):
+    class ClassDescription(html.div):
+        pass
+
+    class MethodDescription(html.div):
+        pass
+
+    class MethodSignature(html.div):
+        pass
+
+    class ParameterDescription(html.div):
+        pass
+
+    class Docstring(html.div):
+        pass
+
+def get_param_htmldesc(linker, func):
+    import inspect
+    # XXX copy and modify formatargspec to produce html
+    return H.em(inspect.formatargspec(*inspect.getargspec(func)))
+
+def build_method_html(linker, dsa, dotted_name):
+    func = dsa.get_obj(dotted_name)
+    params = get_param_htmldesc(linker, func)
+    docstring = func.__doc__
+    local_methodname = func.__name__
+    snippet = H.MethodDescription(
+        H.MethodSignature(local_methodname, "(", params, "):"),
+        H.Docstring(docstring),
+    )
+    return snippet
+

Added: py/dist/py/apigen/testing/test_apigen_example.py
==============================================================================
--- (empty file)
+++ py/dist/py/apigen/testing/test_apigen_example.py	Thu Jan 11 16:19:54 2007
@@ -0,0 +1,44 @@
+import py
+html = py.xml.html
+from py.__.apigen.linker import Linker
+from py.__.apigen.htmlgen import *
+from py.__.apigen.tracer.docstorage import DocStorage, DocStorageAccessor
+from xml.dom.minidom import parseString
+
+def setup_fs_project():
+    temp = py.test.ensuretemp('apigen_example')
+    temp.ensure("pkg/func.py").write(py.code.Source("""
+        def func(arg1):
+            "docstring"
+    """))
+    temp.ensure("pkg/__init__.py").write(py.code.Source("""
+        from py.initpkg import initpkg
+        initpkg(__name__, exportdefs = {
+            'pkg.sub.func': ("./func.py", "func")
+        })
+    """))
+    return temp, 'pkg'
+
+def get_dsa(fsroot, pkgname):
+    py.std.sys.path.insert(0, str(fsroot))
+    pkg = __import__(pkgname)
+    ds = DocStorage()
+    ds.from_pkg(pkg)
+    dsa = DocStorageAccessor(ds)
+    return dsa
+
+class TestExampleProject(object):
+    def setup_class(cls):
+        cls.fs_root, cls.pkg_name = setup_fs_project()
+        cls.dsa = get_dsa(cls.fs_root, cls.pkg_name)
+
+    def setup_method(self, meth):
+        self.linker = Linker()
+
+    def test_method_description(self):
+        snippet = build_method_html(self.linker, self.dsa, 'pkg.sub.func')
+        html = snippet.unicode()
+        print html
+        # XXX (x)html validity testing would be nice...
+        parseString(html)
+

Modified: py/dist/py/apigen/tracer/docstorage.py
==============================================================================
--- py/dist/py/apigen/tracer/docstorage.py	(original)
+++ py/dist/py/apigen/tracer/docstorage.py	Thu Jan 11 16:19:54 2007
@@ -67,6 +67,7 @@
             if to_key:
                 self.descs[to_key] = to_val
         self.make_cache()
+        # XXX
         return self
     
     # XXX: This function becomes slowly outdated and even might go away at some
@@ -121,6 +122,7 @@
                 base = getattr(base, elem)
             d[key] = base
         self.from_dict(d, keep_frames)
+        # XXX
         return self
     
     def from_module(self, func):



More information about the pytest-commit mailing list