Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/fastjsonschema/exceptions.py: 60%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

20 statements  

1import re 

2 

3 

4SPLIT_RE = re.compile(r'[\.\[\]]+') 

5 

6 

7class JsonSchemaException(ValueError): 

8 """ 

9 Base exception of ``fastjsonschema`` library. 

10 """ 

11 

12 

13class JsonSchemaValueException(JsonSchemaException): 

14 """ 

15 Exception raised by validation function. Available properties: 

16 

17 * ``message`` containing human-readable information what is wrong (e.g. ``data.property[index] must be smaller than or equal to 42``), 

18 * invalid ``value`` (e.g. ``60``), 

19 * ``name`` of a path in the data structure (e.g. ``data.property[index]``), 

20 * ``path`` as an array in the data structure (e.g. ``['data', 'property', 'index']``), 

21 * the whole ``definition`` which the ``value`` has to fulfil (e.g. ``{'type': 'number', 'maximum': 42}``), 

22 * ``rule`` which the ``value`` is breaking (e.g. ``maximum``) 

23 * and ``rule_definition`` (e.g. ``42``). 

24 

25 .. versionchanged:: 2.14.0 

26 Added all extra properties. 

27 """ 

28 

29 def __init__(self, message, value=None, name=None, definition=None, rule=None): 

30 super().__init__(message) 

31 self.message = message 

32 self.value = value 

33 self.name = name 

34 self.definition = definition 

35 self.rule = rule 

36 

37 @property 

38 def path(self): 

39 return [item for item in SPLIT_RE.split(self.name) if item != ''] 

40 

41 @property 

42 def rule_definition(self): 

43 if not self.rule or not self.definition: 

44 return None 

45 return self.definition.get(self.rule) 

46 

47 

48class JsonSchemaDefinitionException(JsonSchemaException): 

49 """ 

50 Exception raised by generator of validation function. 

51 """