[Python-Dev] What type of object mmap.read_byte should return on py3k?

Hirokazu Yamamoto ocean-city at m2.ccsnet.ne.jp
Sat Feb 28 12:19:00 CET 2009


Hello. I noticed mmap.read_byte returns 1-length unicode on py3k. I felt 
this was strange, so I created issue on bug tracker 
(http://bugs.python.org/issue5391) and Martin proposed this is suitable 
for discussion on python-dev. I'll quote messages on bug tracker here.

I wrote:
> On Python3000, mmap.read_byte returns str not bytes, and mmap.write_byte
> accepts str. Is this intended behavior?
> 
>>>> import mmap
>>>> m = mmap.mmap(-1, 10)
>>>> type(m.read_byte())
> <class 'str'>
>>>> m.write_byte("a")
>>>> m.write_byte(b"a")
> 
> Maybe another possibility. read_byte() returns int which represents
> byte, write_byte accepts int which represents byte. (Like b"abc"[0]
> returns int not 1-length bytes)

Martin wrote:
> Indeed, I think it should use the "b" code, instead of the "c" code.
> Please discuss this on python-dev, though.
> 
> It might not be ok to backport this to 3.0, since it may break existing
> code.

> Furthermore, all other uses of the "c" code might need to be reconsidered.




More information about the Python-Dev mailing list