diff options
Diffstat (limited to 'requests/structures.py')
-rw-r--r-- | requests/structures.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/requests/structures.py b/requests/structures.py index 3746754..6c2e0b2 100644 --- a/requests/structures.py +++ b/requests/structures.py @@ -8,6 +8,28 @@ Data structures that power Requests. """ +import os +from itertools import islice + +class IteratorProxy(object): + """docstring for IteratorProxy""" + def __init__(self, i): + self.i = i + # self.i = chain.from_iterable(i) + + def __iter__(self): + return self.i + + def __len__(self): + if hasattr(self.i, '__len__'): + return len(self.i) + if hasattr(self.i, 'len'): + return self.i.len + if hasattr(self.i, 'fileno'): + return os.fstat(self.i.fileno()).st_size + + def read(self, n): + return "".join(islice(self.i, None, n)) class CaseInsensitiveDict(dict): """Case-insensitive Dictionary @@ -30,7 +52,7 @@ class CaseInsensitiveDict(dict): self._clear_lower_keys() def __delitem__(self, key): - dict.__delitem__(self, key) + dict.__delitem__(self, self.lower_keys.get(key.lower(), key)) self._lower_keys.clear() def __contains__(self, key): @@ -47,6 +69,7 @@ class CaseInsensitiveDict(dict): else: return default + class LookupDict(dict): """Dictionary lookup object.""" |