forked from aws-powertools/powertools-lambda-python
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathexceptions.py
62 lines (53 loc) · 1.93 KB
/
exceptions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from typing import Any, List, Optional
from ...exceptions import InvalidEnvelopeExpressionError
class SchemaValidationError(Exception):
"""When serialization fail schema validation"""
def __init__(
self,
message: str,
validation_message: Optional[str] = None,
name: Optional[str] = None,
path: Optional[List] = None,
value: Optional[Any] = None,
definition: Optional[Any] = None,
rule: Optional[str] = None,
rule_definition: Optional[Any] = None,
):
"""
Parameters
----------
message : str
Powertools formatted error message
validation_message : str, optional
Containing human-readable information what is wrong
(e.g. `data.property[index] must be smaller than or equal to 42`)
name : str, optional
name of a path in the data structure
(e.g. `data.property[index]`)
path: List, optional
`path` as an array in the data structure
(e.g. `['data', 'property', 'index']`),
value : Any, optional
The invalid value
definition : Any, optional
The full rule `definition`
(e.g. `42`)
rule : str, optional
`rule` which the `data` is breaking
(e.g. `maximum`)
rule_definition : Any, optional
The specific rule `definition`
(e.g. `42`)
"""
super().__init__(message)
self.message = message
self.validation_message = validation_message
self.name = name
self.path = path
self.value = value
self.definition = definition
self.rule = rule
self.rule_definition = rule_definition
class InvalidSchemaFormatError(Exception):
"""When JSON Schema is in invalid format"""
__all__ = ["SchemaValidationError", "InvalidSchemaFormatError", "InvalidEnvelopeExpressionError"]