Add ABC ByteString which unifies bytes and bytearray (but not memoryview).

There's no ABC for "PEP 3118 style buffer API objects" because there's no
way to recognize these in Python (apart from trying to use memoryview()
on them).
Note that array.array really should be registered as a MutableSequence
but that would require importing it whenever collections is imported.
This commit is contained in:
Guido van Rossum 2007-11-21 22:26:24 +00:00
parent 831c476169
commit d05eb0043e
2 changed files with 26 additions and 5 deletions

View file

@ -16,6 +16,7 @@ __all__ = ["Hashable", "Iterable", "Iterator",
"Mapping", "MutableMapping",
"MappingView", "KeysView", "ItemsView", "ValuesView",
"Sequence", "MutableSequence",
"ByteString",
]
### ONE-TRICK PONIES ###
@ -489,8 +490,17 @@ class Sequence(metaclass=ABCMeta):
Sequence.register(tuple)
Sequence.register(str)
Sequence.register(bytes)
Sequence.register(memoryview)
class ByteString(Sequence):
"""This unifies bytes and bytearray.
XXX Should add all their methods.
"""
ByteString.register(bytes)
ByteString.register(bytearray)
class MutableSequence(Sequence):
@ -531,4 +541,4 @@ class MutableSequence(Sequence):
self.extend(values)
MutableSequence.register(list)
MutableSequence.register(bytes)
MutableSequence.register(bytearray) # Multiply inheriting, see ByteString