self[k] = v
_NORMALIZED_HEADER_RE = re.compile(r'^[A-Z0-9][a-z0-9]*(-[A-Z0-9][a-z0-9]*)*$')
+ _normalized_headers = {}
+
@staticmethod
def _normalize_name(name):
"""Converts a name to Http-Header-Case.
>>> HTTPHeaders._normalize_name("coNtent-TYPE")
'Content-Type'
"""
- if HTTPHeaders._NORMALIZED_HEADER_RE.match(name):
- return name
- return "-".join([w.capitalize() for w in name.split("-")])
+ try:
+ return HTTPHeaders._normalized_headers[name]
+ except KeyError:
+ if HTTPHeaders._NORMALIZED_HEADER_RE.match(name):
+ normalized = name
+ else:
+ normalized = "-".join([w.capitalize() for w in name.split("-")])
+ HTTPHeaders._normalized_headers[name] = normalized
+ return normalized
def doctests():