comparison mercurial/hgweb/wsgiheaders.py @ 43077:687b865b95ad

formatting: byteify all mercurial/ and hgext/ string literals Done with python3.7 contrib/byteify-strings.py -i $(hg files 'set:mercurial/**.py - mercurial/thirdparty/** + hgext/**.py - hgext/fsmonitor/pywatchman/** - mercurial/__init__.py') black -l 80 -t py33 -S $(hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**') # skip-blame mass-reformatting only Differential Revision: https://phab.mercurial-scm.org/D6972
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:48:39 -0400
parents 2372284d9457
children 313e3a279828
comparison
equal deleted inserted replaced
43076:2372284d9457 43077:687b865b95ad
20 """Convenience function to format and return a key=value pair. 20 """Convenience function to format and return a key=value pair.
21 This will quote the value if needed or if quote is true. 21 This will quote the value if needed or if quote is true.
22 """ 22 """
23 if value is not None and len(value) > 0: 23 if value is not None and len(value) > 0:
24 if quote or tspecials.search(value): 24 if quote or tspecials.search(value):
25 value = value.replace('\\', '\\\\').replace('"', r'\"') 25 value = value.replace(b'\\', b'\\\\').replace(b'"', r'\"')
26 return '%s="%s"' % (param, value) 26 return b'%s="%s"' % (param, value)
27 else: 27 else:
28 return '%s=%s' % (param, value) 28 return b'%s=%s' % (param, value)
29 else: 29 else:
30 return param 30 return param
31 31
32 32
33 class Headers(object): 33 class Headers(object):
34 """Manage a collection of HTTP response headers""" 34 """Manage a collection of HTTP response headers"""
35 35
36 def __init__(self, headers=None): 36 def __init__(self, headers=None):
37 headers = headers if headers is not None else [] 37 headers = headers if headers is not None else []
38 if type(headers) is not list: 38 if type(headers) is not list:
39 raise TypeError("Headers must be a list of name/value tuples") 39 raise TypeError(b"Headers must be a list of name/value tuples")
40 self._headers = headers 40 self._headers = headers
41 if __debug__: 41 if __debug__:
42 for k, v in headers: 42 for k, v in headers:
43 self._convert_string_type(k) 43 self._convert_string_type(k)
44 self._convert_string_type(v) 44 self._convert_string_type(v)
132 return r"%s(%r)" % (self.__class__.__name__, self._headers) 132 return r"%s(%r)" % (self.__class__.__name__, self._headers)
133 133
134 def __str__(self): 134 def __str__(self):
135 """str() returns the formatted headers, complete with end line, 135 """str() returns the formatted headers, complete with end line,
136 suitable for direct HTTP transmission.""" 136 suitable for direct HTTP transmission."""
137 return '\r\n'.join(["%s: %s" % kv for kv in self._headers] + ['', '']) 137 return b'\r\n'.join(
138 [b"%s: %s" % kv for kv in self._headers] + [b'', b'']
139 )
138 140
139 def __bytes__(self): 141 def __bytes__(self):
140 return str(self).encode('iso-8859-1') 142 return str(self).encode('iso-8859-1')
141 143
142 def setdefault(self, name, value): 144 def setdefault(self, name, value):
172 _value = self._convert_string_type(_value) 174 _value = self._convert_string_type(_value)
173 parts.append(_value) 175 parts.append(_value)
174 for k, v in _params.items(): 176 for k, v in _params.items():
175 k = self._convert_string_type(k) 177 k = self._convert_string_type(k)
176 if v is None: 178 if v is None:
177 parts.append(k.replace('_', '-')) 179 parts.append(k.replace(b'_', b'-'))
178 else: 180 else:
179 v = self._convert_string_type(v) 181 v = self._convert_string_type(v)
180 parts.append(_formatparam(k.replace('_', '-'), v)) 182 parts.append(_formatparam(k.replace(b'_', b'-'), v))
181 self._headers.append( 183 self._headers.append(
182 (self._convert_string_type(_name), "; ".join(parts)) 184 (self._convert_string_type(_name), b"; ".join(parts))
183 ) 185 )