Remove CaseInsensitiveDict
Now that we have resource.header and it ends up being populated with requests.structures.CaseInsensitiveDict, we don't need to hook up our own implementation. Change-Id: I62202e9c5dbe4f59e0c49d590d81aee7c05eac3d
This commit is contained in:
@@ -70,68 +70,3 @@ class Test_urljoin(testtools.TestCase):
|
||||
|
||||
result = utils.urljoin(root, *leaves)
|
||||
self.assertEqual(result, "http://www.example.com/foo/")
|
||||
|
||||
|
||||
class Test_CaseInsensitiveDict(testtools.TestCase):
|
||||
|
||||
def test_create(self):
|
||||
sot1 = utils.CaseInsensitiveDict()
|
||||
self.assertEqual(sot1, {})
|
||||
|
||||
d = {"hello": "hi"}
|
||||
sot2 = utils.CaseInsensitiveDict(d)
|
||||
self.assertEqual(sot2, d)
|
||||
|
||||
def test_get_set(self):
|
||||
sot = utils.CaseInsensitiveDict()
|
||||
value = 100
|
||||
sot["LOL"] = value
|
||||
self.assertEqual(sot["lol"], value)
|
||||
self.assertIn("LOL", sot._dict)
|
||||
|
||||
self.assertRaises(KeyError, sot.__setitem__, None, None)
|
||||
self.assertRaises(KeyError, sot.__getitem__, None)
|
||||
|
||||
def test_del(self):
|
||||
sot = utils.CaseInsensitiveDict()
|
||||
value = 200
|
||||
sot["ROFL"] = value
|
||||
self.assertEqual(sot["rofl"], value)
|
||||
|
||||
del sot["rOfL"]
|
||||
|
||||
self.assertNotIn("ROFL", sot)
|
||||
|
||||
def test_contains(self):
|
||||
sot = utils.CaseInsensitiveDict()
|
||||
sot["LMAO"] = 1
|
||||
|
||||
self.assertIn("lMaO", sot)
|
||||
self.assertNotIn("lol", sot)
|
||||
|
||||
def test_iter(self):
|
||||
parent = {"a": 1, "b": 2}
|
||||
sot = utils.CaseInsensitiveDict(parent)
|
||||
|
||||
for key in sot:
|
||||
self.assertIn(key, parent)
|
||||
|
||||
def test_len(self):
|
||||
parent = {"a": 1, "b": 2}
|
||||
sot = utils.CaseInsensitiveDict(parent)
|
||||
|
||||
self.assertEqual(len(parent), len(sot))
|
||||
|
||||
def test_repr(self):
|
||||
parent = {"a": 1, "b": 2}
|
||||
sot = utils.CaseInsensitiveDict(parent)
|
||||
|
||||
self.assertEqual(repr(parent), repr(sot))
|
||||
|
||||
def test_copy(self):
|
||||
parent = {"a": 1, "b": 2}
|
||||
sot = utils.CaseInsensitiveDict(parent)
|
||||
|
||||
new = sot.copy()
|
||||
self.assertEqual(new, sot)
|
||||
self.assertIsNot(new, sot)
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import collections
|
||||
import logging
|
||||
import sys
|
||||
|
||||
@@ -58,60 +57,3 @@ def urljoin(*args):
|
||||
link. We generally won't care about that in client.
|
||||
"""
|
||||
return '/'.join(str(a or '').strip('/') for a in args)
|
||||
|
||||
|
||||
class CaseInsensitiveDict(collections.MutableMapping):
|
||||
"""A case insensitive dict for handling properties
|
||||
|
||||
In order to have resource.prop work properly for header keys,
|
||||
the attribute dictionary in resource.Resource has to
|
||||
be case insensitive. This class implements a MutableMapping
|
||||
that stores an unmodified dictionary of user-set keys and
|
||||
values, and an internal mapping of the user-set keys to
|
||||
their lower case equivalent.
|
||||
"""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
if parent is not None:
|
||||
self._keys = dict((key.lower(), key) for key in parent)
|
||||
else:
|
||||
self._keys = {}
|
||||
self._dict = parent or {}
|
||||
|
||||
def __getitem__(self, key):
|
||||
if key is None:
|
||||
raise KeyError("key is None")
|
||||
|
||||
return self._dict[self._keys[key.lower()]]
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
if key is None:
|
||||
raise KeyError("key is None")
|
||||
|
||||
self._dict[key] = value
|
||||
self._keys[key.lower()] = key
|
||||
|
||||
def __delitem__(self, key):
|
||||
if key is None:
|
||||
raise KeyError("key is None")
|
||||
|
||||
del self._dict[self._keys[key.lower()]]
|
||||
|
||||
def __contains__(self, key):
|
||||
try:
|
||||
key = self._keys[key.lower()]
|
||||
except KeyError:
|
||||
return False
|
||||
return key in self._dict
|
||||
|
||||
def __iter__(self):
|
||||
return iter(self._dict)
|
||||
|
||||
def __len__(self):
|
||||
return len(self._dict)
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self._dict)
|
||||
|
||||
def copy(self):
|
||||
return CaseInsensitiveDict(self._dict.copy())
|
||||
|
||||
Reference in New Issue
Block a user