What's the status of Python 2.6 support?

Vincent Ladeuil v.ladeuil+lp at free.fr
Tue Jan 13 09:09:31 GMT 2009


Sorry for the delay, the diagnostic regarding the ftp failures
was a bit tough.

So basically, there three kind of failures in your report:

- ftp related ones,

- encoding related ones,

- test_diff_kind_change one.

I can't reproduce the encoding related ones and I wonder if your
setup is unusual there, I'd suspect some unusual locale... or
some strange formatting for your /private volume (doubtly).

The ftp related ones are messy: there is a bug either in medusa
or in python-2.6 asynchat.py (which medusa uses). Tracking the
root cause is a bit too much work for me right now (I end up
understanding that some Unicode strings are wrongly processed as
if they were lists, but that's really deep in medusa/asynchat and
isolating that is not trivial). Anyway, the outcome will be either:

- find a workaround in our test ftp server (requirements: python,
  multi-platform, can be run without being root),

- replace medusa by another ftp server (medusa hasn't been
  updated for years, so the fact that it's not compatible with
  python-2.6 is not a big surprise),

- inhibit medusa use when running 2.6.

I'd like feedback before going further.

    Guillermo> FAIL: test_diff_kind_change (bzrlib.tests.test_diff.TestDiffTree)

<snip/>

    Guillermo> ----------------------------------------------------------------------
    Guillermo> Traceback (most recent call last):
    Guillermo>   File "/Users/guillermo/Projects/bazaar/bundle/external/bzr-1.10/bzrlib/tests/test_diff.py", line 707, in test_diff_kind_change
    Guillermo>     "=== target is 'new'\n")
    Guillermo> AssertionError: pattern "=== target is 'new'
    Guillermo> " not found in
    Guillermo> """\
    Guillermo> --- olddir/oldfile	2008-12-30 03:37:12 +0000
    Guillermo> +++ newdir/newfile	1970-01-01 00:00:00 +0000
    Guillermo> @@ -1,1 +0,0 @@
    Guillermo> -old

    Guillermo> === target is u'new'
    Guillermo> """

I know about this one for a long time and at first was afraid it
was caused by a deeper problem. I'm now convinced it's more a
cosmetic problem that a real test failure, the root cause being
that we use in bzrlib.diff:

class DiffSymlink(DiffPath):

    def diff(self, file_id, old_path, new_path, old_kind, new_kind):


    def diff_symlink(self, old_target, new_target):
        if old_target is None:
            self.to_file.write('=== target is %r\n' % new_target)
        elif new_target is None:
            self.to_file.write('=== target was %r\n' % old_target)
        else:
            self.to_file.write('=== target changed %r => %r\n' %
                              (old_target, new_target))
        return self.CHANGED

new_target is a regular string in 2.5 and a unicode one in 2.6.

Anybody has a good idea on how to fix that (i.e. make the test
pass since the code by itself is correct IMHO) ?

So all in all, the failures you're reporting, while being a
nuisance do not reveal bugs by themselves.

        Vincent



More information about the bazaar mailing list