1 # Copyright (C) 2001-2006 Python Software Foundation
2 # Author: Barry Warsaw
3 # Contact: email-sig@python.org
4
5 """email package exception classes."""
6
7
8 class ESC[4;38;5;81mMessageError(ESC[4;38;5;149mException):
9 """Base class for errors in the email package."""
10
11
12 class ESC[4;38;5;81mMessageParseError(ESC[4;38;5;149mMessageError):
13 """Base class for message parsing errors."""
14
15
16 class ESC[4;38;5;81mHeaderParseError(ESC[4;38;5;149mMessageParseError):
17 """Error while parsing headers."""
18
19
20 class ESC[4;38;5;81mBoundaryError(ESC[4;38;5;149mMessageParseError):
21 """Couldn't find terminating boundary."""
22
23
24 class ESC[4;38;5;81mMultipartConversionError(ESC[4;38;5;149mMessageError, ESC[4;38;5;149mTypeError):
25 """Conversion to a multipart is prohibited."""
26
27
28 class ESC[4;38;5;81mCharsetError(ESC[4;38;5;149mMessageError):
29 """An illegal charset was given."""
30
31
32 # These are parsing defects which the parser was able to work around.
33 class ESC[4;38;5;81mMessageDefect(ESC[4;38;5;149mValueError):
34 """Base class for a message defect."""
35
36 def __init__(self, line=None):
37 if line is not None:
38 super().__init__(line)
39 self.line = line
40
41 class ESC[4;38;5;81mNoBoundaryInMultipartDefect(ESC[4;38;5;149mMessageDefect):
42 """A message claimed to be a multipart but had no boundary parameter."""
43
44 class ESC[4;38;5;81mStartBoundaryNotFoundDefect(ESC[4;38;5;149mMessageDefect):
45 """The claimed start boundary was never found."""
46
47 class ESC[4;38;5;81mCloseBoundaryNotFoundDefect(ESC[4;38;5;149mMessageDefect):
48 """A start boundary was found, but not the corresponding close boundary."""
49
50 class ESC[4;38;5;81mFirstHeaderLineIsContinuationDefect(ESC[4;38;5;149mMessageDefect):
51 """A message had a continuation line as its first header line."""
52
53 class ESC[4;38;5;81mMisplacedEnvelopeHeaderDefect(ESC[4;38;5;149mMessageDefect):
54 """A 'Unix-from' header was found in the middle of a header block."""
55
56 class ESC[4;38;5;81mMissingHeaderBodySeparatorDefect(ESC[4;38;5;149mMessageDefect):
57 """Found line with no leading whitespace and no colon before blank line."""
58 # XXX: backward compatibility, just in case (it was never emitted).
59 MalformedHeaderDefect = MissingHeaderBodySeparatorDefect
60
61 class ESC[4;38;5;81mMultipartInvariantViolationDefect(ESC[4;38;5;149mMessageDefect):
62 """A message claimed to be a multipart but no subparts were found."""
63
64 class ESC[4;38;5;81mInvalidMultipartContentTransferEncodingDefect(ESC[4;38;5;149mMessageDefect):
65 """An invalid content transfer encoding was set on the multipart itself."""
66
67 class ESC[4;38;5;81mUndecodableBytesDefect(ESC[4;38;5;149mMessageDefect):
68 """Header contained bytes that could not be decoded"""
69
70 class ESC[4;38;5;81mInvalidBase64PaddingDefect(ESC[4;38;5;149mMessageDefect):
71 """base64 encoded sequence had an incorrect length"""
72
73 class ESC[4;38;5;81mInvalidBase64CharactersDefect(ESC[4;38;5;149mMessageDefect):
74 """base64 encoded sequence had characters not in base64 alphabet"""
75
76 class ESC[4;38;5;81mInvalidBase64LengthDefect(ESC[4;38;5;149mMessageDefect):
77 """base64 encoded sequence had invalid length (1 mod 4)"""
78
79 # These errors are specific to header parsing.
80
81 class ESC[4;38;5;81mHeaderDefect(ESC[4;38;5;149mMessageDefect):
82 """Base class for a header defect."""
83
84 def __init__(self, *args, **kw):
85 super().__init__(*args, **kw)
86
87 class ESC[4;38;5;81mInvalidHeaderDefect(ESC[4;38;5;149mHeaderDefect):
88 """Header is not valid, message gives details."""
89
90 class ESC[4;38;5;81mHeaderMissingRequiredValue(ESC[4;38;5;149mHeaderDefect):
91 """A header that must have a value had none"""
92
93 class ESC[4;38;5;81mNonPrintableDefect(ESC[4;38;5;149mHeaderDefect):
94 """ASCII characters outside the ascii-printable range found"""
95
96 def __init__(self, non_printables):
97 super().__init__(non_printables)
98 self.non_printables = non_printables
99
100 def __str__(self):
101 return ("the following ASCII non-printables found in header: "
102 "{}".format(self.non_printables))
103
104 class ESC[4;38;5;81mObsoleteHeaderDefect(ESC[4;38;5;149mHeaderDefect):
105 """Header uses syntax declared obsolete by RFC 5322"""
106
107 class ESC[4;38;5;81mNonASCIILocalPartDefect(ESC[4;38;5;149mHeaderDefect):
108 """local_part contains non-ASCII characters"""
109 # This defect only occurs during unicode parsing, not when
110 # parsing messages decoded from binary.
111
112 class ESC[4;38;5;81mInvalidDateDefect(ESC[4;38;5;149mHeaderDefect):
113 """Header has unparsable or invalid date"""