diff options
author | 2011-07-23 00:29:23 -0400 | |
---|---|---|
committer | 2011-07-23 00:29:23 -0400 | |
commit | e31c7431932f899ef1553dac956cb733045121f1 (patch) | |
tree | 8643368136430fb1a35bd4bccc7032f7e03753f2 /github3/config.py | |
parent | core (diff) | |
download | python-github3-e31c7431932f899ef1553dac956cb733045121f1.tar.xz python-github3-e31c7431932f899ef1553dac956cb733045121f1.zip |
config
Diffstat (limited to 'github3/config.py')
-rw-r--r-- | github3/config.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/github3/config.py b/github3/config.py index e69de29..70b7622 100644 --- a/github3/config.py +++ b/github3/config.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- + +""" +github3.config +~~~~~~~~~~~~~~ + +This module provides the Github3 settings feature set. + +""" + +class Settings(object): + _singleton = {} + + # attributes with defaults + __attrs__ = [] + + 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() +settings.verbose = False
\ No newline at end of file |