def _generate_data_for_format(fmt):
    data = {}
    free_size_start = False
    for literal_text, field_name, format_spec, conversion in formatter.parse(fmt):
        if literal_text:
            free_size_start = False
        if not field_name:
            free_size_start = False
            continue
        if not format_spec or format_spec == "s" or format_spec == "d":
            if free_size_start:
                return None
            else:
                free_size_start = True
        if format_spec and '%' in format_spec:
            t = dt.datetime.now()
            t = parse(
                "{t:" + format_spec + "}", compose("{t:" + format_spec + "}", {'t': t}))['t']
            data[field_name] = t
        elif format_spec and 'd' in format_spec:
            if not format_spec.isalpha():
                n = _get_number_from_fmt(format_spec)
            else:
                return None
            data[field_name] = random.randint(0, 99999999999999999) % (10 ** n)
        else:
            if format_spec is None:
                n = 4
            elif format_spec.isalnum():
                n = _get_number_from_fmt(format_spec)
            else:
                n = 4
            randstri = ''
            for x in range(n):
                randstri += random.choice(string.ascii_letters)
            data[field_name] = randstri
    return data