diff options
Diffstat (limited to 'Lib/asyncio')
-rw-r--r-- | Lib/asyncio/transports.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/Lib/asyncio/transports.py b/Lib/asyncio/transports.py index 86b850e..c2feb93 100644 --- a/Lib/asyncio/transports.py +++ b/Lib/asyncio/transports.py @@ -1,5 +1,9 @@ """Abstract Transport class.""" +import sys + +PY34 = sys.version_info >= (3, 4) + __all__ = ['ReadTransport', 'WriteTransport', 'Transport'] @@ -85,11 +89,15 @@ class WriteTransport(BaseTransport): def writelines(self, list_of_data): """Write a list (or any iterable) of data bytes to the transport. - The default implementation just calls write() for each item in - the list/iterable. + The default implementation concatenates the arguments and + calls write() on the result. """ - for data in list_of_data: - self.write(data) + if not PY34: + # In Python 3.3, bytes.join() doesn't handle memoryview. + list_of_data = ( + bytes(data) if isinstance(data, memoryview) else data + for data in list_of_data) + self.write(b''.join(list_of_data)) def write_eof(self): """Close the write end after flushing buffered data. |