self._cookies_lock = threading.RLock()
def copy(self):
- """This is not implemented. Calling this will throw an exception."""
- raise NotImplementedError
+ """Return a copy of this RequestsCookieJar."""
+ new_cj = RequestsCookieJar()
+ new_cj.update(self)
+ return new_cj
def create_cookie(name, value, **kwargs):
if not isinstance(cookies, cookielib.CookieJar):
cookies = cookiejar_from_dict(cookies)
- # Bubble down session cookies.
- for cookie in self.cookies:
- cookies.set_cookie(cookie)
+ # Merge with session cookies
+ merged_cookies = self.cookies.copy()
+ merged_cookies.update(cookies)
+ cookies = merged_cookies
# Gather clues from the surrounding environment.
if self.trust_env:
resp = self.send(prep, **send_kwargs)
# Persist cookies.
- for cookie in resp.cookies:
- self.cookies.set_cookie(cookie)
+ self.cookies.update(resp.cookies)
return resp