import configparser
import random
import string
import sys


def read_config_file(config_path):
    """Parse the application's config file located at config_path."""
    config = configparser.ConfigParser()
    try:
        config.readfp(open(config_path))
    except IOError as e:
        print(
            "Failed to open config file at {}: {}".format(config_path, e.strerror),
            file=sys.stderr,
        )
        raise e
    except Exception as e:
        print(e.strerror, file=sys.stderr)
        raise e
    return config


def get_random_string(seed):
    """Generates a random string based on the given seed"""
    choices = string.ascii_letters + string.digits + string.punctuation
    seed = seed.encode("utf-8")
    rand = random.Random(seed)
    return [rand.choice(choices) for i in range(16)]