56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
"""Common exceptions raised by the program."""
|
|
from typing import Union, List
|
|
|
|
|
|
class InvalidKeyError(Exception):
|
|
"""Thrown when a config file contains an invalid key."""
|
|
|
|
def __init__(self, keys: Union[str, List[str]]):
|
|
"""Create a new InvalidKeyError object with the given key.
|
|
|
|
Args:
|
|
keys: the invalid key(s)
|
|
"""
|
|
if type(keys) == str:
|
|
keys = [keys]
|
|
|
|
self.message = "Invalid key(s): {}".format(", ".join(keys))
|
|
|
|
super().__init__()
|
|
|
|
|
|
class MissingKeyError(Exception):
|
|
"""Thrown when a required key is missing from a config."""
|
|
|
|
def __init__(self, keys: Union[str, List[str]]):
|
|
"""Create a new MissingKeyError object with the given key.
|
|
|
|
Args:
|
|
keys: the invalid key(s)
|
|
"""
|
|
if type(keys) == str:
|
|
keys = [keys]
|
|
|
|
self.message = "Missing key(s): {}".format(", ".join(keys))
|
|
|
|
super().__init__()
|
|
|
|
|
|
class InvalidValueError(Exception):
|
|
"""Thrown when a key contains an invalid value."""
|
|
|
|
def __init__(self, key: str, expected: str, actual: str):
|
|
"""Create a new InvalidValueError given the arguments.
|
|
|
|
Args:
|
|
key: the key containing the invalid value
|
|
expected: name of the expected type
|
|
actual: name of the actual type
|
|
"""
|
|
self.message = (
|
|
f"Invalid value for key {key}: expected {expected}, "
|
|
f"got {actual}"
|
|
)
|
|
|
|
super().__init__()
|