@@ -178,16 +178,36 @@ The :mod:`email.header` module also provides the following convenient functions.
178
178
Decode a message header value without converting the character set. The header
179
179
value is in *header *.
180
180
181
- This function returns a list of ``(decoded_string, charset) `` pairs containing
182
- each of the decoded parts of the header. *charset * is ``None `` for non-encoded
183
- parts of the header, otherwise a lower case string containing the name of the
184
- character set specified in the encoded string.
181
+ For historical reasons, this function may return either:
185
182
186
- Here's an example::
183
+ 1. A list of pairs containing each of the decoded parts of the header,
184
+ ``(decoded_bytes, charset) ``, where *decoded_bytes * is always an instance of
185
+ :class: `bytes `, and *charset * is either:
186
+
187
+ - A lower case string containing the name of the character set specified.
188
+
189
+ - ``None `` for non-encoded parts of the header.
190
+
191
+ 2. A list of length 1 containing a pair ``(string, None) ``, where
192
+ *string * is always an instance of :class: `str `.
193
+
194
+ An :exc: `email.errors.HeaderParseError ` may be raised when certain decoding
195
+ errors occur (e.g. a base64 decoding exception).
196
+
197
+ Here are examples:
187
198
188
199
>>> from email.header import decode_header
189
200
>>> decode_header(' =?iso-8859-1?q?p=F6stal?=' )
190
201
[(b'p\xf6stal', 'iso-8859-1')]
202
+ >>> decode_header(' unencoded_string' )
203
+ [('unencoded_string', None)]
204
+ >>> decode_header(' bar =?utf-8?B?ZsOzbw==?=' )
205
+ [(b'bar ', None), (b'f\xc3\xb3o', 'utf-8')]
206
+
207
+ .. note ::
208
+
209
+ This function exists for for backwards compatibility only. For
210
+ new code, we recommend using :class: `email.headerregistry.HeaderRegistry `.
191
211
192
212
193
213
.. function :: make_header(decoded_seq, maxlinelen=None, header_name=None, continuation_ws=' ')
@@ -203,3 +223,7 @@ The :mod:`email.header` module also provides the following convenient functions.
203
223
:class: `Header ` instance. Optional *maxlinelen *, *header_name *, and
204
224
*continuation_ws * are as in the :class: `Header ` constructor.
205
225
226
+ .. note ::
227
+
228
+ This function exists for for backwards compatibility only, and is
229
+ not recommended for use in new code.
0 commit comments