You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
http.cookies.BaseCookie (and SimpleCookie) can't be load from dict #51695
bpo-5275: BaseCookie.load doesn't create Morsel objects for mappings
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee=Noneclosed_at=<Date2009-12-05.21:12:51.828>created_at=<Date2009-12-05.20:36:52.586>labels= ['library']
title="http.cookies.BaseCookie (and SimpleCookie) can't be load from dict"updated_at=<Date2009-12-05.21:12:51.805>user='https://bugs.python.org/tcourbon'
According the documentation [1], the following code should work :
>>> from http.cookies import SimpleCookie
>>> c = SimpleCookie({'field1': 'value1', 'field2': 'value2'})
>>> print(c)
'Set-Cookie: field1=value1\r\nSet-Cookie: field2=value2'
But an exception is raised :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python31\lib\http\cookies.py", line 507, in output
result.append( V.output(attrs, header) )
AttributeError: 'str' object has no attribute 'output'
in BaseCookie.load(...) the call to BaseCookie.update(rawdata) seem to
use dict.__setitem__ instead of BaseCookie.__setitem__.
Despite it's weird (I believe that the __setitem__ of the child class
should be used) I don't know why.
I don't have a solution to this underlying issue so I propose to define
an update method for BaseCookie:
def update(self, other=None, **kwargs):
if other is None:
other = kwargs
elif not hasattr(other, 'items'):
other = dict(other)
for k, v in other.items():
self[k] = v
Activity
tcourbon commentedon Dec 5, 2009
Hi there !
in BaseCookie.load(...) the call to BaseCookie.update(rawdata) seem to
use dict.__setitem__ instead of BaseCookie.__setitem__.
Despite it's weird (I believe that the __setitem__ of the child class
should be used) I don't know why.
I don't have a solution to this underlying issue so I propose to define
an update method for BaseCookie:
def update(self, other=None, **kwargs):
if other is None:
other = kwargs
elif not hasattr(other, 'items'):
other = dict(other)
for k, v in other.items():
self[k] = v
This method behave like the dict one.
Hope it help and it's not a duplicate.
Regards,
Thomas
[1] :
http://docs.python.org/3.1/library/http.cookies.html#http.cookies.BaseCookie.load
amauryfa commentedon Dec 5, 2009
This was already corrected with bpo-5275. Thanks however for the report.