Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eaf16ab

Browse files
committed
asyncio: sync with github
* Fix ResourceWarning warnings in test_streams * Return True from StreamReader.eof_received() to fix http://bugs.python.org/issue24539 (but still needs a unittest). Add StreamReader.__repr__() for easy debugging. * remove unused imports * Issue #234: Drop JoinableQueue on Python 3.5+
1 parent 71080fc commit eaf16ab

7 files changed

Lines changed: 37 additions & 28 deletions

File tree

Lib/asyncio/locks.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
__all__ = ['Lock', 'Event', 'Condition', 'Semaphore', 'BoundedSemaphore']
44

55
import collections
6-
import sys
76

87
from . import compat
98
from . import events

Lib/asyncio/queues.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
"""Queues"""
22

3-
__all__ = ['Queue', 'PriorityQueue', 'LifoQueue', 'QueueFull', 'QueueEmpty',
4-
'JoinableQueue']
3+
__all__ = ['Queue', 'PriorityQueue', 'LifoQueue', 'QueueFull', 'QueueEmpty']
54

65
import collections
76
import heapq
87

8+
from . import compat
99
from . import events
1010
from . import futures
1111
from . import locks
@@ -289,5 +289,7 @@ def _get(self):
289289
return self._queue.pop()
290290

291291

292-
JoinableQueue = Queue
293-
"""Deprecated alias for Queue."""
292+
if not compat.PY35:
293+
JoinableQueue = Queue
294+
"""Deprecated alias for Queue."""
295+
__all__.append('JoinableQueue')

Lib/asyncio/streams.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
]
77

88
import socket
9-
import sys
109

1110
if hasattr(socket, 'AF_UNIX'):
1211
__all__.extend(['open_unix_connection', 'start_unix_server'])
@@ -240,6 +239,7 @@ def data_received(self, data):
240239

241240
def eof_received(self):
242241
self._stream_reader.feed_eof()
242+
return True
243243

244244

245245
class StreamWriter:
@@ -321,6 +321,24 @@ def __init__(self, limit=_DEFAULT_LIMIT, loop=None):
321321
self._transport = None
322322
self._paused = False
323323

324+
def __repr__(self):
325+
info = ['StreamReader']
326+
if self._buffer:
327+
info.append('%d bytes' % len(info))
328+
if self._eof:
329+
info.append('eof')
330+
if self._limit != _DEFAULT_LIMIT:
331+
info.append('l=%d' % self._limit)
332+
if self._waiter:
333+
info.append('w=%r' % self._waiter)
334+
if self._exception:
335+
info.append('e=%r' % self._exception)
336+
if self._transport:
337+
info.append('t=%r' % self._transport)
338+
if self._paused:
339+
info.append('paused')
340+
return '<%s>' % ' '.join(info)
341+
324342
def exception(self):
325343
return self._exception
326344

Lib/asyncio/subprocess.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
__all__ = ['create_subprocess_exec', 'create_subprocess_shell']
22

3-
import collections
43
import subprocess
54

65
from . import events
7-
from . import futures
86
from . import protocols
97
from . import streams
108
from . import tasks

Lib/asyncio/tasks.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
import functools
1111
import inspect
1212
import linecache
13-
import sys
14-
import types
1513
import traceback
1614
import warnings
1715
import weakref

Lib/asyncio/transports.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
"""Abstract Transport class."""
22

3-
import sys
4-
53
from asyncio import compat
64

75
__all__ = ['BaseTransport', 'ReadTransport', 'WriteTransport',

Lib/test/test_asyncio/test_streams.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,8 @@ def __init__(self, loop):
446446
def handle_client(self, client_reader, client_writer):
447447
data = yield from client_reader.readline()
448448
client_writer.write(data)
449+
yield from client_writer.drain()
450+
client_writer.close()
449451

450452
def start(self):
451453
sock = socket.socket()
@@ -457,12 +459,8 @@ def start(self):
457459
return sock.getsockname()
458460

459461
def handle_client_callback(self, client_reader, client_writer):
460-
task = asyncio.Task(client_reader.readline(), loop=self.loop)
461-
462-
def done(task):
463-
client_writer.write(task.result())
464-
465-
task.add_done_callback(done)
462+
self.loop.create_task(self.handle_client(client_reader,
463+
client_writer))
466464

467465
def start_callback(self):
468466
sock = socket.socket()
@@ -522,6 +520,8 @@ def __init__(self, loop, path):
522520
def handle_client(self, client_reader, client_writer):
523521
data = yield from client_reader.readline()
524522
client_writer.write(data)
523+
yield from client_writer.drain()
524+
client_writer.close()
525525

526526
def start(self):
527527
self.server = self.loop.run_until_complete(
@@ -530,18 +530,14 @@ def start(self):
530530
loop=self.loop))
531531

532532
def handle_client_callback(self, client_reader, client_writer):
533-
task = asyncio.Task(client_reader.readline(), loop=self.loop)
534-
535-
def done(task):
536-
client_writer.write(task.result())
537-
538-
task.add_done_callback(done)
533+
self.loop.create_task(self.handle_client(client_reader,
534+
client_writer))
539535

540536
def start_callback(self):
541-
self.server = self.loop.run_until_complete(
542-
asyncio.start_unix_server(self.handle_client_callback,
543-
path=self.path,
544-
loop=self.loop))
537+
start = asyncio.start_unix_server(self.handle_client_callback,
538+
path=self.path,
539+
loop=self.loop)
540+
self.server = self.loop.run_until_complete(start)
545541

546542
def stop(self):
547543
if self.server is not None:

0 commit comments

Comments
 (0)