#!/usr/bin/env python3 import sys import petname import secrets from itertools import chain def generate_password(names: int) -> str: """ Generate a password from pet names and a random number :param names: Number of names to generate :return: A simple yet secure password """ results = [] while len(results) < names: candidate = petname.Name().capitalize() results.append(candidate) if len(candidate) > 3 else None results.append(str(secrets.randbelow(8999)+1000)) return ".".join(results) def generate_insane_password(length: int) -> str: ascii_pool: str = ''.join(chr(i) for i in chain(range(40, 127), range(180, 256))) return ''.join(secrets.choice(ascii_pool) for _ in range(length)) if __name__ == '__main__': if len(sys.argv) <= 1: print(generate_password(3)) elif sys.argv[1] == '-insane': print(generate_insane_password(20))