On Wed, Oct 27, 2010 at 12:36, Antoine Pitrou <solip...@pitrou.net> wrote: > On Wed, 27 Oct 2010 10:13:12 +0800 > Kristján Valur Jónsson <krist...@ccpgames.com> wrote: >> Although 2.7 has the new buffer interface and memoryview >> objects, these are widely not accepted in the built in modules. > > That's true, and slightly unfortunate. It could be a reason for > switching to 3.1/3.2 :-)
It's rather a reason against it, as it makes supporting both Python 2 and Python 3 harder. However, fixing this in 2.7 just means that you need to support 2.7x or later only, so it's not a good solution. I think using compatibility types is a better solution. I suggested something like that for inclusion in "six", but it was softly rejected. :-) Something like this, for example. It's a str in Python2 and a Bytes in Python3, but it extends both classes with a consistent interface. Improvements, comments and ideas are welcome. bites.py: -------------------- import sys if sys.version < '3': class Bites(str): def __new__(cls, value): if isinstance(value[0], int): # It's a list of integers value = ''.join([chr(x) for x in value]) return super(Bites, cls).__new__(cls, value) def itemint(self, index): return ord(self[index]) def iterint(self): for x in self: yield ord(x) else: class Bites(bytes): def __new__(cls, value): if isinstance(value, str): # It's a unicode string: value = value.encode('ISO-8859-1') return super(Bites, cls).__new__(cls, value) def itemint(self, x): return self[x] def iterint(self): for x in self: yield x -------------------- -- Lennart Regebro: http://regebro.wordpress.com/ Python 3 Porting: http://python3porting.com/ +33 661 58 14 64 _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com