'Create a new buffered reader using the given readable raw IO object.'

def __init__(self, raw, buffer_size=DEFAULT_BUFFER_SIZE):

    if (not raw.readable()):
        raise IOError(u'"raw"    argument    must    be    readable.')
    _BufferedIOMixin.__init__(self, raw)
    if (buffer_size <= 0):
        raise ValueError(u'invalid    buffer    size')
    self.buffer_size = buffer_size
    self._reset_read_buf()
    self._read_lock = Lock()
