Noticed some new failures. <br><br>Full log for build step with Python trunk binary:<br><br><a href="http://www.python.org/dev/buildbot/community/all/x86%20Ubuntu%20Breezy%20trunk/builds/63/step-py.lib/0">http://www.python.org/dev/buildbot/community/all/x86%20Ubuntu%20Breezy%20trunk/builds/63/step-py.lib/0
</a><br><br>Full log for build step with Python 2.5 binary:<br><br><a href="http://www.python.org/dev/buildbot/community/all/x86%20Ubuntu%20Breezy%202.5/builds/33/step-py.lib/0">http://www.python.org/dev/buildbot/community/all/x86%20Ubuntu%20Breezy%202.5/builds/33/step-py.lib/0
</a><br><br>Here are the errors from the 2.5 build step:<br><pre><span class="stdout">_________________ entrypoint: TestRest().test_class_typedefs __________________<br><br>    def test_class_typedefs(self):<br>        class A(object):
<br>            def __init__(self, x):<br>                pass<br>            <br>        class B(object):<br>            def __init__(self, y):<br>                pass<br>            <br>        def xxx(x):<br>            return x
<br>            <br>        descs = {'A':A, 'B':B, 'xxx':xxx}<br>        ds = DocStorage().from_dict(descs)<br>        t = Tracer(ds)<br>        t.start_tracing()<br>        xxx(A(3))<br>        xxx(B(&quot;f&quot;))<br>        
t.end_tracing()<br>        lg = DirectPaste()<br>        tempdir = temppath.ensure(&quot;classargs&quot;, dir=True)<br>        r = RestGen(ds, lg, DirWriter(tempdir))<br>&gt;       r.write()<br><br>[/tmp/pylib/py/apigen/rest/testing/test_rest.py:285]
<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def write(self):<br>        &quot;&quot;&quot;write the data to the writer&quot;&quot;&quot;<br>        # note that this builds up a list of Rest elements for the index as
<br>        # 'side effect', the list is passed along and filled, while the actual<br>        # sections (also ReST elements) are returned by the write_* methods<br>        # XXX this is quite icky! would be nice to have refactored
<br>        indexlst = [Title(&quot;Module: %s&quot; % self.dsa.get_module_name(),<br>                          belowchar=&quot;=&quot;),<br>                    Paragraph(self.dsa.get_module_info()),<br>                    Title(&quot;Exported functions:&quot;, belowchar=&quot;-&quot;)]
<br>        funclst = self.write_function_list(indexlst)<br>        indexlst.append(Title(&quot;Exported classes:&quot;, belowchar=&quot;-&quot;))<br>&gt;       classlst = self.write_class_list(indexlst)<br><br>[/tmp/pylib/py/apigen/rest/genrest.py:128]
<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def write_class_list(self, indexlst):<br>        retlst = []<br>        for name in self.dsa.get_class_names():<br>            sectionname = 'class_%s' % (name,)
<br>            linktarget = self.writer.getlink('class', name, sectionname)<br>            indexlst.append(ListItem(Text(&quot;Class: &quot;), Link(name, linktarget)))<br>&gt;           retlst.append((sectionname, self.write_class
(sectionname, name)))<br><br>[/tmp/pylib/py/apigen/rest/genrest.py:157]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def write_class(self, section_name, class_name):<br>        classlst = [Title(&quot;Class: %s&quot; % class_name, belowchar='-'),
<br>                    LiteralBlock(self.dsa.get_function_doc(class_name))]<br>            <br>        # write down exported methods<br>        classlst.append(Title(&quot;Exported methods:&quot;, belowchar=&quot;^&quot;))
<br>        funclist = []<br>        for method in self.dsa.get_class_methods(class_name):<br>            sectionname = 'method_%s_%s' % (class_name, method)<br>            linktext = '%s.%s' % (class_name, method)<br>            linktarget = 
self.writer.getlink('function', linktext,<br>                                                  sectionname)<br>            classlst.append(ListItem(Link(linktext, linktarget)))<br>            # XXX assuming a function is always part of a class section
<br>            funclist.append((sectionname,<br>                             self.write_function(sectionname,<br>                                                 class_name + &quot;.&quot; + method,<br>&gt;                                                '^')))
<br><br>[/tmp/pylib/py/apigen/rest/genrest.py:177]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def write_function(self, section_name, fun_name, belowchar='-'):<br>        # XXX I think the docstring should either be split on \n\n and cleaned
<br>        # from indentation, or treated as ReST too (although this is obviously<br>        # dangerous for non-ReST docstrings)...<br>        lst = [Title(&quot;Function: %s&quot; % fun_name, belowchar=belowchar),<br>               LiteralBlock(
self.dsa.get_function_doc(fun_name)),<br>               LiteralBlock(self.dsa.get_function_definition(fun_name))]<br>            <br>            <br>        args, retval = self.dsa.get_function_signature(fun_name)<br>        arg_str = &quot;\n&quot;.join([&quot;%s :: %s&quot; % (str(name), str(type)) for name, type in args])
<br>        arg_str += &quot;\n&quot; + &quot;Return value :: %s&quot; % str(retval)<br>        lst.append(Paragraph(&quot;where:&quot;))<br>        lst.append(LiteralBlock(arg_str))<br>            <br>        # XXX missing implementation of 
dsa.get_function_location()<br>        #filename, lineno = self.dsa.get_function_location(fun_name)<br>        #linkname, linktarget = self.linkgen.getlink(filename, lineno)<br>        #if linktarget:<br>        #    lst.append
(Paragraph(&quot;Function source: &quot;,<br>        #               Link(linkname, linktarget)))<br>        #else:<br>        lst.append(Paragraph('Function source:'))<br>&gt;       lst.append(LiteralBlock(self.dsa.get_function_source
(fun_name)))<br><br>[/tmp/pylib/py/apigen/rest/genrest.py:203]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def get_function_source(self, name):<br>        desc = self.ds.descs
[name]<br>        try:<br>&gt;           return str(py.code.Source(desc.pyobj))<br><br>[/tmp/pylib/py/apigen/tracer/docstorage.py:196]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br>
<br>    def __init__(self, *parts, **kwargs):<br>        self.lines = lines = []<br>        de = kwargs.get('deindent', True)<br>        rstrip = kwargs.get('rstrip', True) <br>        for part in parts:<br>            if not part: 
<br>                partlines = []<br>            if isinstance(part, Source):<br>                partlines = part.lines<br>            elif isinstance(part, (unicode, str)):<br>                partlines = part.split('\n')
<br>                if rstrip:<br>                    while partlines: <br>                        if partlines[-1].strip(): <br>                            break<br>                        partlines.pop()<br>            else:
<br>&gt;               partlines = getsource(part, deindent=de).lines<br><br>[/tmp/pylib/py/code/source.py:30]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def getsource(obj, **kwargs):
<br>        if hasattr(obj, 'func_code'):<br>            obj = obj.func_code<br>        elif hasattr(obj, 'f_code'):<br>            obj = obj.f_code<br>        try:<br>            fullsource = obj.co_filename.__source__<br>
        except AttributeError:<br>&gt;           strsrc = inspect.getsource(obj)<br><br>[/tmp/pylib/py/code/source.py:231]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def getsource(object):
<br>        &quot;&quot;&quot;Return the text of the source code for an object.<br>    <br>        The argument may be a module, class, method, function, traceback, frame,<br>        or code object.  The source code is returned as a single string.  An
<br>        IOError is raised if the source code cannot be retrieved.&quot;&quot;&quot;<br>&gt;       lines, lnum = getsourcelines(object)<br><br>[/usr/lib/python2.4/inspect.py:563]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<br><br>    def getsourcelines(object):<br>        &quot;&quot;&quot;Return a list of source lines and starting line number for an object.<br>    <br>        The argument may be a module, class, method, function, traceback, frame,
<br>        or code object.  The source code is returned as a list of the lines<br>        corresponding to the object and the line number indicates where in the<br>        original source file the first line of code was found.  An IOError is
<br>        raised if the source code cannot be retrieved.&quot;&quot;&quot;<br>        lines, lnum = findsource(object)<br>    <br>        if ismodule(object): return lines, 0<br>&gt;       else: return getblock(lines[lnum:]), lnum + 1
<br><br>[/usr/lib/python2.4/inspect.py:555]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br><br>    def getblock(lines):<br>        &quot;&quot;&quot;Extract the block of code at the top of the given list of lines.&quot;&quot;&quot;
<br>        try:<br>&gt;           tokenize.tokenize(ListReader(lines).readline, BlockFinder().tokeneater)<br><br>[/usr/lib/python2.4/inspect.py:538]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<br><br>    def tokenize(readline, tokeneater=printtoken):<br>        &quot;&quot;&quot;<br>        The tokenize() function accepts two parameters: one representing the<br>        input stream, and one providing an output mechanism for tokenize().
<br>    <br>        The first parameter, readline, must be a callable object which provides<br>        the same interface as the readline() method of built-in file objects.<br>        Each call to the function should return one line of input as a string.
<br>    <br>        The second parameter, tokeneater, must also be a callable object. It is<br>        called once for each token, with five arguments, corresponding to the<br>        tuples generated by generate_tokens().
<br>        &quot;&quot;&quot;<br>        try:<br>&gt;           tokenize_loop(readline, tokeneater)<br><br>[/usr/lib/python2.4/tokenize.py:153]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<br><br>    def tokenize_loop(readline, tokeneater):<br>&gt;       for token_info in generate_tokens(readline):<br><br>[/usr/lib/python2.4/tokenize.py:159]<br>_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<br><br>    def generate_tokens(readline):<br>        &quot;&quot;&quot;<br>        The generate_tokens() generator requires one argment, readline, which<br>        must be a callable object which provides the same interface as the
<br>        readline() method of built-in file objects. Each call to the function<br>        should return one line of input as a string.<br>    <br>        The generator produces 5-tuples with these members: the token type; the
<br>        token string; a 2-tuple (srow, scol) of ints specifying the row and<br>        column where the token begins in the source; a 2-tuple (erow, ecol) of<br>        ints specifying the row and column where the token ends in the source;
<br>        and the line on which the token was found. The line passed is the<br>        logical line; continuation lines are included.<br>        &quot;&quot;&quot;<br>        lnum = parenlev = continued = 0<br>        namechars, numchars = 
string.ascii_letters + '_', '0123456789'<br>        contstr, needcont = '', 0<br>        contline = None<br>        indents = [0]<br>    <br>        while 1:                                   # loop over lines in stream<br>
            line = readline()<br>            lnum = lnum + 1<br>            pos, max = 0, len(line)<br>    <br>            if contstr:                            # continued string<br>                if not line:<br>                    raise TokenError, (&quot;EOF in multi-line string&quot;, strstart)
<br>                endmatch = endprog.match(line)<br>                if endmatch:<br>                    pos = end = endmatch.end(0)<br>                    yield (STRING, contstr + line[:end],<br>                               strstart, (lnum, end), contline + line)
<br>                    contstr, needcont = '', 0<br>                    contline = None<br>                elif needcont and line[-2:] != '\\\n' and line[-3:] != '\\\r\n':<br>                    yield (ERRORTOKEN, contstr + line,
<br>                               strstart, (lnum, len(line)), contline)<br>                   </span><span class="stdout"> contstr = ''<br>                    contline = None<br>                    continue<br>                else:
<br>                    contstr = contstr + line<br>                    contline = contline + line<br>                    continue<br>    <br>            elif parenlev == 0 and not continued:  # new statement<br>                if not line: break
<br>                column = 0<br>                while pos &lt; max:                   # measure leading whitespace<br>                    if line[pos] == ' ': column = column + 1<br>                    elif line[pos] == '\t': column = (column/tabsize + 1)*tabsize
<br>                    elif line[pos] == '\f': column = 0<br>                    else: break<br>                    pos = pos + 1<br>                if pos == max: break<br>    <br>                if line[pos] in '#\r\n':           # skip comments or blank lines
<br>                    yield ((NL, COMMENT)[line[pos] == '#'], line[pos:],<br>                               (lnum, pos), (lnum, len(line)), line)<br>                    continue<br>    <br>                if column &gt; indents[-1]:           # count indents or dedents
<br>                    indents.append(column)<br>                    yield (INDENT, line[:pos], (lnum, 0), (lnum, pos), line)<br>                while column &lt; indents[-1]:<br>                    if column not in indents:
<br>E                       raise IndentationError(<br>                            &quot;unindent does not match any outer indentation level&quot;)<br>&gt;                       IndentationError: unindent does not match any outer indentation level
<br><br>[/usr/lib/python2.4/tokenize.py:229]<br>_______________________________________________________________________________<br>______ entrypoint: TestPopenGateway().test_channel_passing_over_channel _______<br><br>    def test_channel_passing_over_channel(self):
<br>        channel = self.gw.remote_exec('''<br>                        c = channel.gateway.newchannel()<br>                        channel.send(c)<br>                        c.send(42)<br>                      ''')<br>        c = 
channel.receive()<br>        x = c.receive()<br>        assert x == 42<br>    <br>        # check that the both sides previous channels are really gone<br>        channel.waitclose(0.3)<br>E       assert <a href="http://channel.id">
channel.id</a> not in self.gw.channelfactory._channels<br>&gt;       AssertionError: (inconsistently failed then succeeded)<br><br>[/tmp/pylib/py/execnet/testing/test_gateway.py:160]<br>_______________________________________________________________________________
<br>_______________________ entrypoint: test_importall[226] _______________________<br><br>    def check_import(modpath): <br>        print &quot;checking import&quot;, modpath<br>E       assert __import__(modpath) <br>&gt;       ImportError: No module named 
package.submodule.__init__<br><br>[/tmp/pylib/py/misc/testing/test_initpkg.py:67]<br>- - - - - - - - - - - - -  [226]: recorded stdout - - - - - - - - - - - - - -<br>checking import py.__.apigen.tracer.testing.package.submodule.__init__
<br><br>_______________________________________________________________________________<br>_______________________ entrypoint: test_importall[227] _______________________<br><br>    def check_import(modpath): <br>        print &quot;checking import&quot;, modpath
<br>E       assert __import__(modpath) <br>&gt;       ImportError: No module named package.submodule.pak.__init__<br><br>[/tmp/pylib/py/misc/testing/test_initpkg.py:67]<br>- - - - - - - - - - - - -  [227]: recorded stdout - - - - - - - - - - - - - -
<br>checking import py.__.apigen.tracer.testing.package.submodule.pak.__init__<br><br>_______________________________________________________________________________<br>_______________________ entrypoint: test_importall[228] _______________________
<br><br>    def check_import(modpath): <br>        print &quot;checking import&quot;, modpath<br>E       assert __import__(modpath) <br>&gt;       ImportError: No module named package.submodule.pak.mod<br><br>[/tmp/pylib/py/misc/testing/test_initpkg.py:67]
<br>- - - - - - - - - - - - -  [228]: recorded stdout - - - - - - - - - - - - - -<br>checking import py.__.apigen.tracer.testing.package.submodule.pak.mod<br><br>_______________________________________________________________________________
<br>===== tests finished: 1256 passed, 5 failed, 55 skipped in 154.12 seconds =====<br>inserting into sys.path: /tmp/pylib</span></pre><br>