|
| 1 | +#!/usr/bin/env python |
| 2 | + |
| 3 | +from argparse import ArgumentParser |
| 4 | +from jinja2 import Environment, PackageLoader |
| 5 | +import population |
| 6 | +import random |
| 7 | +import string |
| 8 | +import sys |
| 9 | + |
| 10 | + |
| 11 | +def generate_person(): |
| 12 | + person = { |
| 13 | + 'id': ''.join(random.choices(string.ascii_letters, k=5)), |
| 14 | + 'birthyear': random.randint(1950, 2015), |
| 15 | + 'nr_friends': random.randint(0, 50), |
| 16 | + } |
| 17 | + return person |
| 18 | + |
| 19 | +def main(): |
| 20 | + arg_parser = ArgumentParser(description='generate random people') |
| 21 | + arg_parser.add_argument('n', type=int, default=5, nargs='?', |
| 22 | + help='number of people to generate') |
| 23 | + arg_parser.add_argument('--format', choices=['html', 'md'], |
| 24 | + default='md', help='output format, html or md') |
| 25 | + arg_parser.add_argument('--seed', type=int, default=1234, |
| 26 | + help='seed for random number generator') |
| 27 | + options = arg_parser.parse_args() |
| 28 | + random.seed(options.seed) |
| 29 | + people = [generate_person() for _ in range(options.n)] |
| 30 | + environment = Environment(loader=PackageLoader('population', 'templates'), |
| 31 | + trim_blocks=True, lstrip_blocks=True) |
| 32 | + template = environment.get_template('report.' + options.format) |
| 33 | + print(template.render(people=people)) |
| 34 | + |
| 35 | +if __name__ == '__main__': |
| 36 | + status = main() |
| 37 | + sys.exit(status) |
0 commit comments