[Biopython-dev] CDAO problems on Windows, was: Compiling Biopython on 64 bit Windows

Peter Cock p.j.a.cock at googlemail.com
Tue Apr 22 13:08:40 UTC 2014


On Tue, Apr 22, 2014 at 10:57 AM, Peter Cock <p.j.a.cock at googlemail.com> wrote:
> On Mon, Apr 21, 2014 at 10:51 PM, Manlio Calvi <manlio.calvi at gmail.com> wrote:
>> ...
>>
>> ======================================================================
>> ERROR: test_write_0 (test_Phylo_CDAO.WriterTests)
>> Write and re-parse the phylogenies in test.cdao.
>> ----------------------------------------------------------------------
>> Traceback (most recent call last):
>>   File ".\test_Phylo_CDAO.py", line 62, in test_write
>>     CDAOIO.write([t1], outfile)
>>   File "C:\Users\CasuallyChaotic\Desktop\3.3 - Biopython
>> test\WinPython-64bit-3.3.3.3\python-3.3.3.amd64\biopython\Bio\Phylo\CDAOIO.py",
>> line 74, in write
>>     return Writer(trees).write(handle, plain=plain, **kwargs)
>>   File "C:\Users\CasuallyChaotic\Desktop\3.3 - Biopython
>> test\WinPython-64bit-3.3.3.3\python-3.3.3.amd64\biopython\Bio\Phylo\CDAOIO.py",
>> line 268, in write
>>     handle.write('@prefix %s: <%s> .\n' % (k, v))
>> TypeError: 'str' does not support the buffer interface
>>
>
> That looks like a string versus bytes issue with the handle
> (text versus binary mode), but I don't recall any changes
> in that code... maybe a question for Eric?

I've not looked into this issue yet, however the reason the
existing Windows buildbot never reported this is that I have
not installed RDFlib on it (not even for Python 2.6 and 2.7).

That was an oversight - and part of the reason to try and
get more buildslaves - diversity.

>> #################################################
>>
>>
>> The test output for CDAO reports a series of slightly messages (more
>> than an hundred) that looks like this:
>> file://C:\WinPython3.3\3.3 - Biopython
>> test\WinPython-64bit-3.3.3.3\python-3.3.3.amd64\biopython\Tests\CDAO\test.cdao/tree0000001#node0000001
>> does not look like a valid URI, trying to serialize this will break.
>
> My hunch is this warning could be due to the mixed slashes
> (forward and back) which is typically fine with the windows
> API for filenames, but evidently is confusing the CDAO
> code - a question for Ben?

According to the RDFLib docstring for their URI class, yes, they
issue this warning if the URI contains a Windows-style forward slash:

http://rdflib.readthedocs.org/en/latest/_modules/rdflib/term.html

The relevant snippet of their code is:

_invalid_uri_chars = '<>" {}|\\^`'

def _is_valid_uri(uri):
    for c in _invalid_uri_chars:
        if c in uri: return False
    return True

My suggestion would be to switch all the "\" into "/" here.

Peter



More information about the Biopython-dev mailing list