aboutsummaryrefslogtreecommitdiff
path: root/requests/config.py
diff options
context:
space:
mode:
Diffstat (limited to 'requests/config.py')
-rw-r--r--requests/config.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/requests/config.py b/requests/config.py
new file mode 100644
index 0000000..63d3fa9
--- /dev/null
+++ b/requests/config.py
@@ -0,0 +1,56 @@
+# -*- coding: utf-8 -*-
+
+"""
+requests.config
+~~~~~~~~~~~~~~~
+
+This module provides the Requests settings feature set.
+
+"""
+
+class Settings(object):
+ _singleton = {}
+
+ # attributes with defaults
+ __attrs__ = ('timeout',)
+
+ def __init__(self, **kwargs):
+ super(Settings, self).__init__()
+
+ self.__dict__ = self._singleton
+
+
+ def __call__(self, *args, **kwargs):
+ # new instance of class to call
+ r = self.__class__()
+
+ # cache previous settings for __exit__
+ r.__cache = self.__dict__.copy()
+ map(self.__cache.setdefault, self.__attrs__)
+
+ # set new settings
+ self.__dict__.update(*args, **kwargs)
+
+ return r
+
+
+ def __enter__(self):
+ pass
+
+
+ def __exit__(self, *args):
+
+ # restore cached copy
+ self.__dict__.update(self.__cache.copy())
+ del self.__cache
+
+
+ def __getattribute__(self, key):
+ if key in object.__getattribute__(self, '__attrs__'):
+ try:
+ return object.__getattribute__(self, key)
+ except AttributeError:
+ return None
+ return object.__getattribute__(self, key)
+
+settings = Settings() \ No newline at end of file