import re


def parse_cantrip_line(line):
    """
    Parse a single line to determine if it contains a cantrip.
    Since the entire thing is on a single line, no state is required.
    :param str line: a single line of text
    :return: dict of dicts containing parsed data
    """

    data = {}

    re_cantrip = re.compile('^(?P<title>.+) \\((?P<type>CANTRIP|CHARM|SIGN|HEX)\\): (?P<effect>.+)$')
    m = re_cantrip.match(line)

    # Found a cantrip
    if m:
        data[m.group('title')] = {
            'Title': m.group('title'),
            'Type': m.group('type'),
            'Effect': m.group('effect')
        }

    return data