pass
# Support for unicode domain names and paths.
- scheme, netloc, path, params, query, fragment = urlparse(url)
+ scheme, netloc, path, _params, query, fragment = urlparse(url)
if not scheme:
raise MissingSchema("Invalid URL %r: No schema supplied" % url)
netloc = netloc.encode('utf-8')
if isinstance(path, str):
path = path.encode('utf-8')
- if isinstance(params, str):
- params = params.encode('utf-8')
+ if isinstance(_params, str):
+ _params = _params.encode('utf-8')
if isinstance(query, str):
query = query.encode('utf-8')
if isinstance(fragment, str):
else:
query = enc_params
- url = requote_uri(urlunparse([scheme, netloc, path, params, query, fragment]))
+ url = requote_uri(urlunparse([scheme, netloc, path, _params, query, fragment]))
self.url = url
def prepare_headers(self, headers):
params=None,
data=None,
headers=None,
- cookies=None,
+ cookies=None or {},
files=None,
auth=None,
timeout=None,
verify=None,
cert=None):
+
+ # merge session cookies into passed-in ones
+ dead_cookies = None
+ # passed-in cookies must become a CookieJar:
+ if not isinstance(cookies, cookielib.CookieJar):
+ cookies = cookiejar_from_dict(cookies)
+ # support unsetting cookies that have been passed in with None values
+ # this is only meaningful when `cookies` is a dict ---
+ # for a real CookieJar, the client should use session.cookies.clear()
+ if cookies is not None:
+ dead_cookies = [name for name in cookies if cookies[name] is None]
+ # merge the session's cookies into the passed-in cookies:
+ for cookie in self.cookies:
+ cookies.set_cookie(cookie)
+ # remove the unset cookies from the jar we'll be using with the current request
+ # (but not from the session's own store of cookies):
+ if dead_cookies is not None:
+ for name in dead_cookies:
+ remove_cookie_by_name(cookies, name)
+
+ # Merge local kwargs with session kwargs.
+ for attr in self.__attrs__:
+ # we already merged cookies:
+ if attr == 'cookies':
+ continue
+
+ session_val = getattr(self, attr, None)
+ local_val = locals().get(attr)
+ locals()[attr] = merge_kwargs(local_val, session_val)
+
+
+ headers = merge_kwargs(headers, self.headers)
+
req = Request()
req.method = method
req.url = url