Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/future/backports/email/errors.py: 81%

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

42 statements  

1# Copyright (C) 2001-2006 Python Software Foundation 

2# Author: Barry Warsaw 

3# Contact: email-sig@python.org 

4 

5"""email package exception classes.""" 

6from __future__ import unicode_literals 

7from __future__ import division 

8from __future__ import absolute_import 

9from future.builtins import super 

10 

11 

12class MessageError(Exception): 

13 """Base class for errors in the email package.""" 

14 

15 

16class MessageParseError(MessageError): 

17 """Base class for message parsing errors.""" 

18 

19 

20class HeaderParseError(MessageParseError): 

21 """Error while parsing headers.""" 

22 

23 

24class BoundaryError(MessageParseError): 

25 """Couldn't find terminating boundary.""" 

26 

27 

28class MultipartConversionError(MessageError, TypeError): 

29 """Conversion to a multipart is prohibited.""" 

30 

31 

32class CharsetError(MessageError): 

33 """An illegal charset was given.""" 

34 

35 

36# These are parsing defects which the parser was able to work around. 

37class MessageDefect(ValueError): 

38 """Base class for a message defect.""" 

39 

40 def __init__(self, line=None): 

41 if line is not None: 

42 super().__init__(line) 

43 self.line = line 

44 

45class NoBoundaryInMultipartDefect(MessageDefect): 

46 """A message claimed to be a multipart but had no boundary parameter.""" 

47 

48class StartBoundaryNotFoundDefect(MessageDefect): 

49 """The claimed start boundary was never found.""" 

50 

51class CloseBoundaryNotFoundDefect(MessageDefect): 

52 """A start boundary was found, but not the corresponding close boundary.""" 

53 

54class FirstHeaderLineIsContinuationDefect(MessageDefect): 

55 """A message had a continuation line as its first header line.""" 

56 

57class MisplacedEnvelopeHeaderDefect(MessageDefect): 

58 """A 'Unix-from' header was found in the middle of a header block.""" 

59 

60class MissingHeaderBodySeparatorDefect(MessageDefect): 

61 """Found line with no leading whitespace and no colon before blank line.""" 

62# XXX: backward compatibility, just in case (it was never emitted). 

63MalformedHeaderDefect = MissingHeaderBodySeparatorDefect 

64 

65class MultipartInvariantViolationDefect(MessageDefect): 

66 """A message claimed to be a multipart but no subparts were found.""" 

67 

68class InvalidMultipartContentTransferEncodingDefect(MessageDefect): 

69 """An invalid content transfer encoding was set on the multipart itself.""" 

70 

71class UndecodableBytesDefect(MessageDefect): 

72 """Header contained bytes that could not be decoded""" 

73 

74class InvalidBase64PaddingDefect(MessageDefect): 

75 """base64 encoded sequence had an incorrect length""" 

76 

77class InvalidBase64CharactersDefect(MessageDefect): 

78 """base64 encoded sequence had characters not in base64 alphabet""" 

79 

80# These errors are specific to header parsing. 

81 

82class HeaderDefect(MessageDefect): 

83 """Base class for a header defect.""" 

84 

85 def __init__(self, *args, **kw): 

86 super().__init__(*args, **kw) 

87 

88class InvalidHeaderDefect(HeaderDefect): 

89 """Header is not valid, message gives details.""" 

90 

91class HeaderMissingRequiredValue(HeaderDefect): 

92 """A header that must have a value had none""" 

93 

94class NonPrintableDefect(HeaderDefect): 

95 """ASCII characters outside the ascii-printable range found""" 

96 

97 def __init__(self, non_printables): 

98 super().__init__(non_printables) 

99 self.non_printables = non_printables 

100 

101 def __str__(self): 

102 return ("the following ASCII non-printables found in header: " 

103 "{}".format(self.non_printables)) 

104 

105class ObsoleteHeaderDefect(HeaderDefect): 

106 """Header uses syntax declared obsolete by RFC 5322""" 

107 

108class NonASCIILocalPartDefect(HeaderDefect): 

109 """local_part contains non-ASCII characters""" 

110 # This defect only occurs during unicode parsing, not when 

111 # parsing messages decoded from binary.