[pypy-svn] r9956 - pypy/dist/pypy/documentation/revreport
hpk at codespeak.net
hpk at codespeak.net
Sun Mar 20 23:05:49 CET 2005
Author: hpk
Date: Sun Mar 20 23:05:49 2005
New Revision: 9956
Added:
pypy/dist/pypy/documentation/revreport/revreport.py
Modified:
pypy/dist/pypy/documentation/revreport/delta.py
Log:
improved reports to have an index page
you should run 'revreport.py' to generate
a local set of html pages or otherwise
go to
http://codespeak.net/pypy/rev/current
to see the current version of the "revision report"
Modified: pypy/dist/pypy/documentation/revreport/delta.py
==============================================================================
--- pypy/dist/pypy/documentation/revreport/delta.py (original)
+++ pypy/dist/pypy/documentation/revreport/delta.py Sun Mar 20 23:05:49 2005
@@ -1,5 +1,6 @@
import autopath
from pypy.interpreter.error import OperationError
+from pypy.tool.pypyrev import pypyrev
from py.xml import html
import py
@@ -313,6 +314,8 @@
reports = []
class Report(Entry):
+ HEADER = '''<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'''
useshort = False
notes = None
@@ -324,22 +327,15 @@
Entry.__init__(self, name)
self.title = title
-
self.rows = []
-
reports.append(self)
-
self.total = 0
self.missing = 0
-
self.grandtotal = 0
self.grandmissing = 0
-
self._fname = fname
-
self.__dict__.update(kwds)
-
def add_row(self, entry, rest, name=None, parent=None):
self.rows.append((name, entry, rest, parent))
@@ -432,8 +428,6 @@
class_ = st.class_
bar = incompleteness_bar(dir, st.incompleteness)
- HEADER = '''<?xml version="1.0" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'''
HIDE = 'display: none'
SHOW = 'display: table'
@@ -481,8 +475,8 @@
-cmp(st1.incompleteness, st2.incompleteness))
self.fill_table(dir, incompleteness_table, rows)
- f = dir.join(self.fname()).write(
- HEADER+page.unicode().encode("utf8")
+ dir.join(self.fname()).write(
+ self.HEADER+page.unicode().encode("utf8")
)
def navig(self):
@@ -493,8 +487,11 @@
descr = "methods+attrs"
def navig(self):
- return html.p(html.span(self.title,**{'class': 'title'}),
- "|",mods_report.link(None),"|",cls_report.link(None))
+ return html.p(html.span(self.title, class_='title'),
+ "|", mods_report.link(None),"|",
+ cls_report.link(None), '|',
+ index_report.link(None),
+ )
def grandadd(self, parent):
parent.grandtotal += self.total
@@ -507,8 +504,11 @@
granddescr = "module funcs+others and contained types/classes methods+attrs"
def navig(self):
- return html.p(html.span(self.title,**{'class': 'title'}),
- "|",mods_report.link(None),"|",cls_report.link(None))
+ return html.p(html.span(self.title, class_='title'),
+ "|", mods_report.link(None),
+ "|", cls_report.link(None),
+ "|", index_report.link(None),
+ )
notes = ("(): callable, C: type/class")
@@ -519,6 +519,47 @@
elif self.status == 'PRESENT':
parent.grandtotal += self.grandtotal
+class IndexReport(Report):
+
+ def __init__(self, name, rev):
+ Report.__init__(self, name)
+ self.shortname = "PyPy rev %d" % rev
+
+ def html(self, DIR):
+ rev = pypyrev()
+ title = "PyPy - rev %s - Deltareport Overview" % rev
+ body = html.body(html.h2(title))
+
+ page = html.html(
+ html.head(
+ html.title(title),
+ html.link(href="delta.css", rel="stylesheet", type="text/css"),
+ ),
+ body,
+ xmlns="http://www.w3.org/1999/xhtml")
+
+ def percent(incomplete):
+ return 100 * (1-incomplete)
+ mod_incomplete = mods_report.status_wrt().incompleteness
+ modimg = incompleteness_bar(DIR, mod_incomplete)
+ modlink = mods_report.link(None)
+ modlink.append(modimg)
+ modlink.append(" %.2f %%" % (percent(mod_incomplete),))
+ body.append(html.div(modlink))
+
+ cls_incomplete = cls_report.status_wrt().incompleteness
+ clsimg = incompleteness_bar(DIR, cls_incomplete)
+ clslink = cls_report.link(None)
+ clslink.append(clsimg)
+ clslink.append(" %.2f %%" % (percent(cls_incomplete),))
+ body.append(html.div(clslink))
+
+ body.append(html.h2("Quantitative PyPy CPython-Compliance: %.2f %%" %
+ percent((cls_incomplete+mod_incomplete)/2)))
+
+ DIR.join(self.fname()).write(
+ self.HEADER+page.unicode().encode("utf8")
+ )
def delta(expl1, expl2, modnames):
@@ -527,8 +568,10 @@
granddescr = "of all modules funcs+others and contained types/classes methods+attrs",
useshort = True)
def navig():
- return html.p(html.span('Modules',**{'class': 'title'}),
- "|",cls_report.link(None))
+ return html.p(html.span('Modules', class_='title'),
+ "|", cls_report.link(None),
+ "|", index_report.link(None),
+ )
rep.navig = navig
@@ -658,7 +701,8 @@
def navig():
return html.p(mods_report.link(None),
- "|",html.span('Types/Classes',**{'class': 'title'}))
+ "|",html.span('Types/Classes', class_="title"),
+ "|", index_report.link(None))
cls_rep.navig = navig
@@ -714,16 +758,19 @@
mods)
TO_CHECK.sort()
-def getpypyrevision(cache=[]):
- try:
- return cache[0]
- except IndexError:
- import pypy
- import py
- pypydir = py.path.svnwc(pypy.__file__).dirpath()
- rev = pypydir.info().rev
- cache.append(rev)
- return rev
+def genreport(DIR):
+ from pypy.objspace.std.objspace import StdObjSpace
+ space = StdObjSpace()
+
+ global cls_report, mods_report, index_report
+ mods_report = delta(ObjSpaceExplore(space), host_explore, TO_CHECK)
+ cls_report = cls_delta_rep()
+ rev = pypyrev()
+ index_report = IndexReport('index', rev)
+
+ DIR.ensure(dir=1)
+ for rep in reports:
+ rep.html(DIR)
if __name__ == '__main__':
if len(sys.argv) == 1:
@@ -732,13 +779,5 @@
sys.exit(0)
DIR = py.path.local(sys.argv[1])
+ genreport(DIR)
- from pypy.objspace.std.objspace import StdObjSpace
- space = StdObjSpace()
-
- mods_report = delta(ObjSpaceExplore(space), host_explore, TO_CHECK)
- cls_report = cls_delta_rep()
-
- DIR.ensure(dir=1)
- for rep in reports:
- rep.html(DIR)
Added: pypy/dist/pypy/documentation/revreport/revreport.py
==============================================================================
--- (empty file)
+++ pypy/dist/pypy/documentation/revreport/revreport.py Sun Mar 20 23:05:49 2005
@@ -0,0 +1,38 @@
+
+import os, sys
+import autopath
+import py
+from pypy.documentation.revreport import delta
+from pypy.tool.pypyrev import pypyrev
+
+BASE = py.path.local(delta.__file__).dirpath()
+DEST = BASE.join('revdata')
+
+assert DEST.dirpath().check()
+
+if __name__ == '__main__':
+ rev = pypyrev()
+ revdir = DEST.ensure(str(rev), dir=1)
+ BASE.join('delta.css').copy(revdir)
+ BASE.join('delta.js').copy(revdir)
+ delta.genreport(revdir)
+
+ print "generated into", revdir
+
+ l = []
+ for x in DEST.listdir():
+ try:
+ x = int(x.basename)
+ except (TypeError, ValueError):
+ pass
+ else:
+ l.append(x)
+ latest = DEST.join(str(max(l)))
+ assert latest.check()
+ current = DEST.join('current')
+ if current.check():
+ current.remove()
+ if sys.platform == 'win32':
+ latest.copy(current)
+ else:
+ current.mksymlinkto(latest)
More information about the Pypy-commit
mailing list