def METHOD_NAME(input) -> List[Block]:
    """
    Parses a markdown tutorial file to code blacks to be executed
    :param input:
    :return:
    """
    with open(input) as stream:
        lines = stream.readlines()
    curr_block = None
    blocks = []
    fn = None
    prior_lines = []
    anns = []
    expected_fail = False
    while lines:
        line = lines[0].rstrip()
        lines = lines[1:]
        if curr_block is None:
            if line.lower().startswith("<!-- fail"):
                expected_fail = True
            m = re_html_comment.match(line)
            if m:
                anns.append(m.group(1).strip().lower())
                continue
            m = re_decl.match(line)
            if m:
                fn = m.group(1)
                print(f"FILE={fn}")
            else:
                m = re_start_yaml.match(line)
                if m:
                    curr_block = Block(
                        category=m.group(1),
                        title=fn,
                        expected_fail=expected_fail,
                        content="",
                        annotations=anns,
                        prior_lines=prior_lines,
                    )
                    prior_lines = []
                    anns = []
                else:
                    prior_lines += [line]
        else:
            # in block
            fn = None
            expected_fail = False
            m = re_end_yaml.match(line)
            if m:
                blocks.append(curr_block)
                curr_block = None
            else:
                curr_block.content += f"{line}\n"
    return blocks