mirror of
https://github.com/kennethreitz/requests3.git
synced 2026-06-05 23:10:16 +00:00
81 lines
1.8 KiB
Python
81 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
requests.config
|
|
~~~~~~~~~~~~~~~
|
|
|
|
This module provides the Requests 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.base_headers = {
|
|
'User-Agent': 'python-requests.org',
|
|
'Accept-Encoding': ', '.join([ 'identity', 'deflate', 'compress', 'gzip' ]),
|
|
}
|
|
settings.accept_gzip = True
|
|
settings.proxies = None
|
|
settings.verbose = None
|
|
settings.timeout = None
|
|
settings.max_redirects = 30
|
|
settings.decode_unicode = False
|
|
settings.gracefull_hooks = True
|
|
|
|
#: A dictionary of default hooks to be applied, based on settings.
|
|
settings.default_hooks = {
|
|
'args': list(),
|
|
'pre_request': list(),
|
|
'post_request': list(),
|
|
'response': list()
|
|
}
|
|
|
|
#: Use socket.setdefaulttimeout() as fallback?
|
|
settings.timeout_fallback = True
|