From: Barry Warsaw Date: Fri, 6 Sep 2002 03:38:12 +0000 (+0000) Subject: replace_header(): New method given by Skip Montanaro in SF patch X-Git-Tag: v2.3c1~4203 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=229727fa0738562c22b7bdc672a8762886020eac;p=thirdparty%2FPython%2Fcpython.git replace_header(): New method given by Skip Montanaro in SF patch #601959. Modified slightly by Barry (who added the KeyError in case the header is missing. --- diff --git a/Lib/email/Message.py b/Lib/email/Message.py index 65e3c6d5ab8a..0a8d90be7ad6 100644 --- a/Lib/email/Message.py +++ b/Lib/email/Message.py @@ -350,7 +350,6 @@ class Message: Example: msg.add_header('content-disposition', 'attachment', filename='bud.gif') - """ parts = [] for k, v in _params.items(): @@ -362,6 +361,21 @@ class Message: parts.insert(0, _value) self._headers.append((_name, SEMISPACE.join(parts))) + def replace_header(self, _name, _value): + """Replace a header. + + Replace the first matching header found in the message, retaining + header order and case. If no matching header was found, a KeyError is + raised. + """ + _name = _name.lower() + for i, (k, v) in zip(range(len(self._headers)), self._headers): + if k.lower() == _name: + self._headers[i] = (k, _value) + break + else: + raise KeyError, _name + # # These methods are silently deprecated in favor of get_content_type() and # friends (see below). They will be noisily deprecated in email 3.0.