Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/yaml/error.py: 17%

58 statements  

« prev     ^ index     » next       coverage.py v7.3.2, created at 2023-12-08 06:51 +0000

1 

2__all__ = ['Mark', 'YAMLError', 'MarkedYAMLError'] 

3 

4class Mark: 

5 

6 def __init__(self, name, index, line, column, buffer, pointer): 

7 self.name = name 

8 self.index = index 

9 self.line = line 

10 self.column = column 

11 self.buffer = buffer 

12 self.pointer = pointer 

13 

14 def get_snippet(self, indent=4, max_length=75): 

15 if self.buffer is None: 

16 return None 

17 head = '' 

18 start = self.pointer 

19 while start > 0 and self.buffer[start-1] not in '\0\r\n\x85\u2028\u2029': 

20 start -= 1 

21 if self.pointer-start > max_length/2-1: 

22 head = ' ... ' 

23 start += 5 

24 break 

25 tail = '' 

26 end = self.pointer 

27 while end < len(self.buffer) and self.buffer[end] not in '\0\r\n\x85\u2028\u2029': 

28 end += 1 

29 if end-self.pointer > max_length/2-1: 

30 tail = ' ... ' 

31 end -= 5 

32 break 

33 snippet = self.buffer[start:end] 

34 return ' '*indent + head + snippet + tail + '\n' \ 

35 + ' '*(indent+self.pointer-start+len(head)) + '^' 

36 

37 def __str__(self): 

38 snippet = self.get_snippet() 

39 where = " in \"%s\", line %d, column %d" \ 

40 % (self.name, self.line+1, self.column+1) 

41 if snippet is not None: 

42 where += ":\n"+snippet 

43 return where 

44 

45class YAMLError(Exception): 

46 pass 

47 

48class MarkedYAMLError(YAMLError): 

49 

50 def __init__(self, context=None, context_mark=None, 

51 problem=None, problem_mark=None, note=None): 

52 self.context = context 

53 self.context_mark = context_mark 

54 self.problem = problem 

55 self.problem_mark = problem_mark 

56 self.note = note 

57 

58 def __str__(self): 

59 lines = [] 

60 if self.context is not None: 

61 lines.append(self.context) 

62 if self.context_mark is not None \ 

63 and (self.problem is None or self.problem_mark is None 

64 or self.context_mark.name != self.problem_mark.name 

65 or self.context_mark.line != self.problem_mark.line 

66 or self.context_mark.column != self.problem_mark.column): 

67 lines.append(str(self.context_mark)) 

68 if self.problem is not None: 

69 lines.append(self.problem) 

70 if self.problem_mark is not None: 

71 lines.append(str(self.problem_mark)) 

72 if self.note is not None: 

73 lines.append(self.note) 

74 return '\n'.join(lines) 

75