"""Communication link driver."""

import sys
import select


def talk(socket, source=sys.stdin.buffer, sink=sys.stdout.buffer):
    """Run communication, in a loop. Input from `source` is sent on `socket`,
    and data received on `socket` is forwarded to `sink`.

    All file descriptors must be non-blocking.
    """

    OUTPUT_BUFFER_SIZE = 1024

    while True:
        readable, writable, exceptional = select.select((socket, source),
                                                        (),
                                                        (socket, source, sink))
        if exceptional:
            break  # Leave in case of closed sockets and such
        if source in readable:
            socket.send(source.readline())
        if socket in readable:
            sink.write(socket.recv(OUTPUT_BUFFER_SIZE))
            sink.flush()

@@ -82,48 +82,23 @@
 rce=
-sys.stdin.buffer, sink=sys.stdout.buffer
+None, sink=None
 ):%0A 
@@ -241,58 +241,474 @@
     
-All file descriptors must be non-blocking.%0A    %22%22%22
+If %60source%60 or %60sink%60 are not provided, sys.stdin and sys.stdout are used.%0A%0A    All file descriptors must be non-blocking.%0A    %22%22%22%0A%0A    # Query these here, rather than in the arguments, to appease nose.%0A    # Nose, through its mechanism for capturing stdout, doesn't have a .buffer%0A    # on sys.stdout, so this causes an error when the module is imported.%0A    if source is None:%0A        source = sys.stdin.buffer%0A    if sink is None:%0A        sink = sys.stdout.buffer
 %0A%0A  

Fix the test