Changeset 90:ebc26878086f in livinglogic.python.pycoco

Show
Ignore:
Timestamp:
08/05/11 14:09:01 (8 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Checkout Python via hg. Update XIST version to 3.23.

Files:
4 modified

Legend:

Unmodified
Added
Removed
  • NEWS.rst

    r86 r90  
     1Changes in 0.8 (released ??/??/2011) 
     2------------------------------------ 
     3 
     4*   The Python source code is checked out via ``hg`` now. 
     5 
     6*   Updated to use XIST 3.23. 
     7 
     8 
    19Changes in 0.7.2 (released 09/08/2010) 
    210-------------------------------------- 
  • setup.py

    r88 r90  
    3636Python 
    3737source code 
    38 subversion 
     38hg 
     39mercurial 
    3940test 
    4041code coverage 
     
    8687    ], 
    8788    install_requires=[ 
    88         "ll-xist >= 3.15", 
     89        "ll-xist >= 3.23", 
    8990    ], 
    9091    zip_safe=False, 
  • src/pycoco/__main__.py

    r89 r90  
    2727    projectname = "Python" 
    2828    jobname = "GenerateCodeCoverage" 
    29     maxtime = 6* 60 * 60 # 6 hours 
     29    maxtime = 8 * 60 * 60 # 8 hours 
    3030 
    3131    def __init__(self): 
    32         self.url = url.URL("http://svn.python.org/snapshots/python3k.tar.bz2") 
     32        self.url = url.URL("http://hg.python.org/cpython") 
    3333        self.outputdir = url.Dir("~/pycoco") 
    3434 
     
    6363    def download(self): 
    6464        with self.prefix("download: "): 
    65             self.log("### downloading %s to %s" % (self.url, self.url.file)) 
    66             urllib.urlretrieve(str(self.url), str(self.url.file)) 
    67  
    68     def unpack(self): 
    69         with self.prefix("unpack: "): 
    70             self.log("### unpacking %s" % self.url.file) 
    71             self.cmd("tar xvjf %s" % self.url.file) 
    72             lines = list(open("python/.timestamp", "r")) 
    73             self.timestamp = datetime.datetime.fromtimestamp(int(lines[0])) 
    74             self.revision = lines[2] 
     65            self.log("### cloning %s to python" % self.url) 
     66            self.cmd("hg clone %s python" % str(self.url)) 
     67 
     68    def getinfo(self): 
     69        with self.prefix("getinfo: "): 
     70            self.log("### getting info") 
     71            lines = self.cmd("cd python && hg tip --template='{date|hgdate} {node} {rev} {author|person}'") 
     72            data = lines[0].split() 
     73            self.timestamp = datetime.datetime.fromtimestamp(int(data[0])) 
     74            self.changesetid = data[2] 
     75            self.revision = int(data[3]) 
     76            self.author = " ".join(data[4:]) 
    7577 
    7678    def configure(self): 
     
    9597            self.log("### cleaning up files from previous run") 
    9698            self.cmd("rm -rf python") 
    97             self.cmd("rm %s" % self.url.file) 
    9899 
    99100    def coveruncovered(self, file): 
     
    154155            # Generate main page 
    155156            self.log("### generating index page") 
    156             template = ul4c.compile(xmlns.page(xmlns.filelist(), onload="files_prepare()").conv().string()) 
     157            template = ul4c.Template(xmlns.page(xmlns.filelist(), onload="files_prepare()").conv().string()) 
    157158            s = template.renders( 
    158159                filename=None, 
    159160                now=datetime.datetime.now(), 
    160161                timestamp=self.timestamp, 
     162                changesetid=self.changesetid, 
    161163                revision=self.revision, 
     164                author=self.author, 
    162165                crumbs=[ 
    163166                    dict(title="Core Development", href="http://www.python.org/dev/"), 
     
    178181 
    179182            # Generate page for each source file 
    180             template = ul4c.compile(xmlns.page(xmlns.filecontent()).conv().string()) 
     183            template = ul4c.Template(xmlns.page(xmlns.filecontent()).conv().string()) 
    181184            for (i, file) in enumerate(files): 
    182185                filename = file.name.split("/", 1)[-1] 
     
    220223        self.cleanup() 
    221224        self.download() 
    222         self.unpack() 
     225        self.getinfo() 
    223226        self.configure() 
    224227        files = self.files("python") 
     
    235238    def argparser(self): 
    236239        p = sisyphus.Job.argparser(self) 
    237         p.add_argument("-u", "--url", dest="url", help="URL of the Python tarball", default=str(self.url), type=url.URL) 
     240        p.add_argument("-u", "--url", dest="url", help="URL of the Python mercurial repository", default=str(self.url), type=url.URL) 
    238241        p.add_argument("-d", "--outputdir", dest="outputdir", help="Directory where to put the HTML files", default=str(self.outputdir), type=url.Dir) 
    239242        return p 
  • src/pycoco/xmlns.py

    r70 r90  
    3434                            ": ", ul4.printx("filename"), 
    3535                        ul4.else_(), 
    36                             " (", ul4.print_("timestamp.format('%Y-%m-%d')"), ")", 
     36                            " (", ul4.print_("format(timestamp, '%Y-%m-%d')"), ")", 
    3737                        ul4.end("if"), 
    3838                    ), 
     
    9292 
    9393    def convert(self, converter): 
    94         now = datetime.datetime.now() 
    9594        e = xsc.Frag( 
    9695            html.h1("Python code coverage"), 
    9796            html.p("Generated at ", ul4.printx("now.format('%Y-%m-%d %H:%M:%S')"), class_="note"), 
    98             html.p("Repository timestamp ", ul4.printx("timestamp.format('%Y-%m-%d %H:%M:%S')"), class_="note"), 
    99             html.p(ul4.printx("revision"), class_="note"), 
     97            html.p("Last commit at ", ul4.printx("timestamp.format('%Y-%m-%d %H:%M:%S')"), " by ", ul4.printx("author"), class_="note"), 
     98            html.p("Changeset identification hash ", ul4.printx("changesetid"), class_="note"), 
     99            html.p("Local revision number ", ul4.printx("revision"), class_="note"), 
    100100            html.p(html.a("Build log", href="buildlog.txt"), " ",html.a("Test log", href="testlog.txt"), class_="note"), 
    101101            htmlspecials.plaintable( 
     
    178178 
    179179 
    180 class fileitem(xsc.Element): 
    181     xmlns = xmlns 
    182  
    183     class Attrs(xsc.Element.Attrs): 
    184         class name(xsc.TextAttr): required = True 
    185         class lines(xsc.IntAttr): required = True 
    186         class coverablelines(xsc.IntAttr): required = True 
    187         class coveredlines(xsc.IntAttr): required = True 
    188  
    189     def convert(self, converter): 
    190         lines = int(self.attrs.lines) 
    191         coverablelines = int(self.attrs.coverablelines) 
    192         coveredlines = int(self.attrs.coveredlines) 
    193  
    194         distsize = (100, 8) 
    195         if coverablelines: 
    196             coverage = "%.02f%%" % (100.*coveredlines/coverablelines) 
    197             coverageclass = "coverage" 
    198             distribution = xsc.Frag() 
    199             totalwidth = 0 
    200             if coverablelines < lines: 
    201                 width = int(float(lines-coverablelines)/lines*distsize[0]) 
    202                 distribution.append(htmlspecials.pixel(width=width, height=distsize[1], style="background-color: #ccc;")) 
    203                 totalwidth += width 
    204             if coveredlines < coverablelines: 
    205                 width = int(float(coverablelines-coveredlines)/lines*distsize[0]) 
    206                 distribution.append(htmlspecials.pixel(width=width, height=distsize[1], style="background-color: #f00;")) 
    207                 totalwidth += width 
    208             if totalwidth < distsize[0]: 
    209                 width = distsize[0]-totalwidth 
    210                 distribution.append(htmlspecials.pixel(width=width, height=distsize[1], style="background-color: #0c0;")) 
    211                 totalwidth += width 
    212         else: 
    213             coverage = "n/a" 
    214             coverageclass = "coverage disable" 
    215             distribution = htmlspecials.pixel(width=distsize[0], height=distsize[1], style="background-color: #000;") 
    216  
    217         e = html.tr( 
    218             html.th( 
    219                 html.a( 
    220                     self.attrs.name, 
    221                     href=("root:", self.attrs.name, ".html"), 
    222                 ), 
    223                 class_="filename", 
    224             ), 
    225             html.td( 
    226                 lines, 
    227                 class_="nroflines", 
    228             ), 
    229             html.td( 
    230                 coverablelines, 
    231                 class_="coverablelines", 
    232             ), 
    233             html.td( 
    234                 coveredlines, 
    235                 class_="coveredlines", 
    236             ), 
    237             html.td( 
    238                 coverage, 
    239                 class_=coverageclass, 
    240             ), 
    241             html.td( 
    242                 distribution, 
    243                 class_="dist", 
    244             ), 
    245             class_="files", 
    246         ) 
    247         return e.convert(converter) 
    248  
    249  
    250180class filecontent(xsc.Element): 
    251181    xmlns = xmlns