def lines_between(text, start_marker, end_marker, *, include_blank=False):
    """
    From a block of text, yield all lines between `start_marker` and
    `end_marker`

    Parameters
    ----------
    text : str
        The block of text
    start_marker : str
        The block-starting marker to match
    end_marker : str
        The block-ending marker to match
    include_blank : bool, optional
        Skip yielding blank lines
    """
    found_start = False
    start_marker = start_marker.lower()
    end_marker = end_marker.lower()
    for line in text.splitlines():
        if line.strip().lower() == start_marker:
            found_start = True
        elif line.strip().lower() == end_marker:
            break
        elif found_start and (line.strip() or include_blank):
            yield line
