in utils/fake_data_generation/generate_data_california.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