working on Issue2275

Currently working on issue2275
 
import UserDict
class CaseInsensitiveDict(dict, UserDict.DictMixin):
def __init__(self, *args, **kw):
self.orig = {}
super(CaseInsensitiveDict, self).__init__(*args, **kw)
def items(self):
keys = dict.keys(self)
values = dict.values(self)
return dict((self.orig[k],v) for k in keys for v in values)
def __setitem__(self, k, v):
hash_val = hash(k.lower())
self.orig[hash_val] = k
dict.__setitem__(self, hash_val, v)
def __getitem__(self, k):
return dict.__getitem__(self, hash(k.lower()))


somedict = CaseInsensitiveDict()
print somedict
somedict['Blah'] = "Boo"
somedict['blah'] = "Boo1"
print somedict['BLAH']
print somedict
print somedict.items()


This can be used for creating a case insensitive dictionary.
But there are tests failing in urllib2 if I use it directly. I think more methods than just items() need to be overridden for usage.

No comments: