def generate_data_row()

in utils/fake_data_generation/generate_data_illinois.py [0:0]


def generate_data_row(fields, **options):
  row_data = {}
  for field in fields:
    field_name = field["name"]
    faker_params = field.get("faker_params", {})
    faker_function = field.get("faker_function", None)
    derive_from = field.get("derive_from", None)
    debug = options.get("debug", False)

    param_list = []
    for key, value in faker_params.items():
      param_list.append(f"{key}={value}")
    params_str = ",".join(param_list)

    # Generate fake data if faker_function is defined. Otherwise, use the
    # default value.
    if faker_function == "phone_number":
      field_value = faker.custom_phone_number(
          country_code=str(field.get("country_code", "+1")),
          num_digits=field.get("num_digits", 9))

    if faker_function == "claimant_id":
      field_value = randint(100,1000) 
          #num_digits=field.get("num_digits", 3))

    elif faker_function == "address":
      field_value = faker.address()
      if field.get("exclude_po_box", True):
        while re.match(".*(\s|\n)+(FPO|DPO|APO) (AA|AP|AE).*", field_value):
          field_value = faker.address()

    elif faker_function:
      field_value = eval(f"faker.{faker_function}({params_str})")

    elif derive_from:
      derive_regex = field.get("derive_regex", "")
      matches = re.match(derive_regex, row_data[derive_from], re.IGNORECASE)
      field_value = matches[field.get("derive_match_group", 1)]

    else:
      field_value = field["value"]

    # Convert string format.
    if isinstance(field_value, datetime.date) and "date_format" in field:
      field_value = field_value.strftime(field["date_format"])

    if field.get("single_quotes", False):
      field_value = f"'{field_value}'"
    if field.get("double_quotes", False):
      field_value = f'"{field_value}"'

    row_data[field_name] = field_value

  if debug:
    print("Adding row:")
    print(row_data)

  # Convert all values to string and remove line breaks.
  for field_key in row_data.keys():
    field_value = str(field_value)
    field_value = " ".join(field_value.split())
    row_data[field_key] = row_data[field_key].replace("\n", " ")

  return row_data