[Biopython] Bio.Entrez.epost error with Python 3.2
Michiel de Hoon
mjldehoon at yahoo.com
Sat Jan 26 23:06:10 EST 2013
For some reason Entrez.epost switched to post=False to post=True in the call to _open in Bio.Entrez. I don't know why; the other Entrez functions all use post=False, and if I use post=False in Entrez.epost it seems to work fine. The switch from post=False to post=True was made in this commit; Peter, do you remember why we switched to post=True?
https://github.com/biopython/biopython/commit/c928057b6c811c8959daf806ee6159eb09e0928f#Bio/Entrez/__init__.py
Best,
-Michiel.
--- On Sat, 1/26/13, Nicolas Joannin <nicolas.joannin at gmail.com> wrote:
> From: Nicolas Joannin <nicolas.joannin at gmail.com>
> Subject: [Biopython] Bio.Entrez.epost error with Python 3.2
> To: "Biopython Mailing List" <biopython at lists.open-bio.org>
> Date: Saturday, January 26, 2013, 7:42 AM
> Hello everyone,
>
> I am having trouble with using Bio.Entrez.epost: see details
> below.
> I have tried converting the variables to bytes, but
> everything I've tried
> gives the same error message.
>
> I'm guessing that this might be a bug in biopython when used
> with Python 3.
> If not, could you please tell me where I got this wrong, and
> how I can fix
> it?
>
> Best regards,
> Nicolas
>
>
> Here are the details:
> I have tried the following:
>
> -
> post_h=Entrez.epost("nuccore",id="160418,160351")
> -
> post_h=Entrez.epost(b"nuccore",id=b"160418,160351")
> -
> post_h=Entrez.epost("nuccore".encode("utf-8"),id="160418,160351".encode("utf-8")
>
>
> >>>
> post_h=Entrez.epost("nuccore",id="160418,160351")
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File
> "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/Bio/Entrez/__init__.py",
> line 97, in epost
> return _open(cgi, variables, post=True)
> File
> "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/Bio/Entrez/__init__.py",
> line 436, in _open
> handle = urllib.request.urlopen(cgi,
> data=options)
> File
> "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/urllib/request.py",
> line 138, in urlopen
> return opener.open(url, data, timeout)
> File
> "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/urllib/request.py",
> line 367, in open
> req = meth(req)
> File
> "/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/urllib/request.py",
> line 1066, in do_request_
> raise TypeError("POST data should be bytes"
> TypeError: POST data should be bytes or an iterable of
> bytes. It cannot be
> str.
>
>
> Nicolas Joannin, Ph.D.
> Bioinformatics Center
> Kyoto University, Uji campus, Japan
> _______________________________________________
> Biopython mailing list - Biopython at lists.open-bio.org
> http://lists.open-bio.org/mailman/listinfo/biopython
>
More information about the Biopython
mailing list