diff options
author | 2011-06-23 02:59:49 -0400 | |
---|---|---|
committer | 2011-06-23 02:59:49 -0400 | |
commit | ecad4a9e256a10208b5e97d66f88416fecdf9cb3 (patch) | |
tree | 9c8922645118812cb2c3dd7bce57b46cb78f6a66 /github3/config.py | |
parent | clean slate (diff) | |
download | python-github3-ecad4a9e256a10208b5e97d66f88416fecdf9cb3.tar.xz python-github3-ecad4a9e256a10208b5e97d66f88416fecdf9cb3.zip |
updates
Diffstat (limited to 'github3/config.py')
-rw-r--r-- | github3/config.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/github3/config.py b/github3/config.py new file mode 100644 index 0000000..3a9705c --- /dev/null +++ b/github3/config.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +""" +github3.config +~~~~~~~~~~~~~~ + +This module provides the GitHub3 settings feature set. + +:copyright: (c) 2011 by Kenneth Reitz. +:license: ISC, see LICENSE for more details. +""" + + +class Settings(object): + _singleton = dict() + + # 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() +settings.domain = 'https://api.github.com'
\ No newline at end of file |