code: 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