"""
-# Time (in seconds) to allow the request to connect to
-# the remote host before timing it out.
-
-# timeout = None
-
-
class Settings(object):
_singleton = {}
+
+ # attributes with defaults
__attrs__ = ('timeout',)
def __init__(self, **kwargs):
self.__dict__ = self._singleton
- 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)
+
+ def __call__(self, *args, **kwargs):
+ # new instance of class to call
+ r = self.__class__()
+
+ # cache previous settings for __exit__
+ r.__cache = self.__dict__.copy()
+
+ # 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 __call__(self, *args, **kwargs):
- r = self.__class__()
- r.__cache = self.__dict__.copy()
- self.__dict__.update(*args, **kwargs)
-
- return r
-
+ 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