@classmethod
def from_bytes(cls, bs, offset=0, length=None, **kw):
    """ Return a `CornuCopyBuffer` fed from the supplied bytes `bs`
        starting at `offset` and ending after `length`.

        This is handy for callers parsing using buffers but handed bytes.

        Parameters:
        * `bs`: the bytes
        * `offset`: a starting position for the data; the input
          data will start this far into the bytes
        * `length`: the maximium number of bytes to use; the input
          data will be cropped this far past the starting point;
          default: the number of bytes in `bs` after `offset`
        Other keyword arguments are passed to the buffer constructor.
    """
    if offset < 0:
        raise ValueError('offset(%d) should be >= 0' % (offset,))
    if offset > len(bs):
        raise ValueError('offset(%d) beyond end of bs (%d bytes)' % (offset,
            len(bs)))
    if length is None:
        length = len(bs) - offset
    elif length < 1:
        raise ValueError('length(%d) < 1' % (length,))
    end_offset = offset + length
    if end_offset > len(bs):
        raise ValueError('offset(%d)+length(%d) > len(bs):%d' % (offset,
            length, len(bs)))
    if offset > 0 or end_offset < len(bs):
        bs = memoryview(bs)[offset:end_offset]
    return cls([bs], **kw)
