]> granicus.if.org Git - python/commitdiff
replace_header(): New method given by Skip Montanaro in SF patch
authorBarry Warsaw <barry@python.org>
Fri, 6 Sep 2002 03:38:12 +0000 (03:38 +0000)
committerBarry Warsaw <barry@python.org>
Fri, 6 Sep 2002 03:38:12 +0000 (03:38 +0000)
#601959.  Modified slightly by Barry (who added the KeyError in case
the header is missing.

Lib/email/Message.py

index 65e3c6d5ab8a34a19aff0923f4620c9dd5c9471f..0a8d90be7ad692ed519750cd23eb4f82821bf5d7 100644 (file)
@@ -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.