aboutsummaryrefslogtreecommitdiff
path: root/requests/structures.py
diff options
context:
space:
mode:
Diffstat (limited to 'requests/structures.py')
-rw-r--r--requests/structures.py25
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."""