Inherit CaseInsensitiveDict from urllib3 HTTPHeaderDict (#1302)

It might look like a hack, but the API is stable enough and didn't change in the past 3+ years.
This commit is contained in:
Alexander Kukushkin
2019-12-02 12:14:59 +01:00
committed by GitHub
parent 726ee46111
commit e1d569ad75
2 changed files with 9 additions and 19 deletions
+8 -18
View File
@@ -6,8 +6,8 @@ import socket
import stat
import time
from collections import MutableMapping, OrderedDict
from six.moves.urllib_parse import urlparse, parse_qsl, unquote
from urllib3.response import HTTPHeaderDict
from ..dcs import slot_name_from_member_name, RemoteMember
from ..utils import compare_values, parse_bool, parse_int, split_host_port, uri
@@ -250,29 +250,19 @@ class ConfigWriter(object):
self.writeline("{0} = '{1}'".format(param, self.escape(value)))
class CaseInsensitiveDict(MutableMapping):
class CaseInsensitiveDict(HTTPHeaderDict):
def __init__(self, data):
self._store = OrderedDict()
self.update(data)
def __setitem__(self, key, value):
self._store[key.lower()] = (key, value)
def add(self, key, val):
self[key] = val
def __getitem__(self, key):
return self._store[key.lower()][1]
return self._container[key.lower()][1]
def __delitem__(self, key):
del self._store[key.lower()]
def __iter__(self):
return (casedkey for casedkey, mappedvalue in self._store.values())
def __len__(self):
return len(self._store)
def __repr__(self):
return str(dict(self.items()))
def copy(self):
return CaseInsensitiveDict(self._store.values())
return CaseInsensitiveDict(self._container.values())
class ConfigHandler(object):
+1 -1
View File
@@ -622,7 +622,7 @@ class TestPostgresql(BaseTestPostgresql):
config['synchronous_mode_strict'] = True
self.p.config.get_server_parameters(config)
self.p.config.set_synchronous_standby('foo')
self.p.config.get_server_parameters(config)
self.assertTrue(str(self.p.config.get_server_parameters(config)).startswith('{'))
@patch('time.sleep', Mock())
def test__wait_for_connection_close(self):