class PropertyError(Exception):
    UNKNOWN_ERROR = -1
    CANNOT_BE_NULL = 1
    NOT_AN_INTEGER = 2
    NOT_A_FLOAT = 3
    NOT_A_STRING = 4
    NOT_A_BOOLEAN = 5
    NOT_A_DATE = 6
    NOT_A_DATETIME = 7
    NOT_A_UUID = 8
    NOT_A_LIST = 9
    LIST_CONTENT_IS_INVALID = 10
    NOT_A_DICT = 11
    DICT_KEY_IS_INVALID = 12
    DICT_VALUE_IS_INVALID = 13
    NOT_FOUND_IN_HEADERS = 14
    NOT_FOUND_IN_QUERY_STRING = 15
    NOT_FOUND_IN_PATH = 16

    def __init__(self, property_name, error_code: int):
        self.property_name = property_name
        self.error_code = error_code

    def __str__(self):
        return "Error parsing property {}, reason: {}".format(self.property_name, self.error_code)
