New submission from Thomas Courbon <hart...@yahoo.fr>:

Hi there !

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

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

----------
components: Library (Lib)
messages: 96007
nosy: tcourbon
severity: normal
status: open
title: http.cookies.BaseCookie (and SimpleCookie) can't be load from dict
versions: Python 3.1

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue7446>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to