forked from MaineDSA/generate_fake_membership_list
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_fake_list.py
executable file
·63 lines (52 loc) · 2.18 KB
/
generate_fake_list.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""Create test dataset for DSA membership list"""
import argparse
import random
import datetime
from pathlib import Path
from zipfile import ZipFile
import pandas as pd
from tqdm import tqdm
from utils.fake_members import generate_member
from utils.fake_addresses import get_random_realistic_address, get_fake_address
def main():
"""Write a test dataset to file, both as CSV and zipped CSV"""
parser = argparse.ArgumentParser(description="Member list generator")
parser.add_argument("--chapter-name", help="Chapter name", default="Maine")
parser.add_argument("--y-chapter-name", help="Youth chapter name", default="")
parser.add_argument(
"-n", help="Number of addresses to generate", default=10, type=int
)
parser.add_argument(
"--output", help="Output file name", default="fake_membership_list"
)
parser.add_argument(
"--real-address-zips",
help="Generate real addresses for these zip codes (comma-separated)",
)
args = parser.parse_args()
# Access options using args.option1, args.option2, etc.
print(args)
people = []
for _n in tqdm(range(args.n), unit="comrades", leave=False):
person = generate_member()
if Path(".mapbox_token") and args.real_address_zips:
zip_code = random.choice(args.real_address_zips.split(","))
realistic_address = get_random_realistic_address(zip_code)
if realistic_address:
person.update(realistic_address)
else:
print("No realistic address found for zip code: ", zip_code, "...")
break
else:
person.update(get_fake_address())
people.append(person)
df = pd.DataFrame(data=people)
todays_date = datetime.datetime.now().date().strftime("%Y%m%d")
filename_and_date = f"{args.output}_{todays_date}"
df.to_csv(f"./{filename_and_date}.csv", sep=",", index=False)
if Path(f"./{filename_and_date}.zip").is_file():
Path(f"./{filename_and_date}.zip").unlink()
with ZipFile(f"./{filename_and_date}.zip", "x") as list_zip:
list_zip.write(f"./{filename_and_date}.csv", arcname=f"{args.output}.csv")
if __name__ == "__main__":
main()