[issue19449] csv.DictWriter can't handle extra non-string fields

2013-11-19 Thread Roundup Robot

Roundup Robot added the comment:

New changeset 6e5afeada7ca by R David Murray in branch '3.3':
#19449: Handle non-string keys when generating 'fieldnames' error.
http://hg.python.org/cpython/rev/6e5afeada7ca

New changeset ee2c80eeca2a by R David Murray in branch 'default':
Merge: #19449: Handle non-string keys when generating 'fieldnames' error.
http://hg.python.org/cpython/rev/ee2c80eeca2a

New changeset e52d7b173ab5 by R David Murray in branch '2.7':
#19449: Handle non-string keys when generating 'fieldnames' error.
http://hg.python.org/cpython/rev/e52d7b173ab5

--
nosy: +python-dev

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-11-19 Thread R. David Murray

R. David Murray added the comment:

Thanks, Tomas and Vajrasky.  I tweaked the patch slightly: Thomas's fix was 
better, since it doesn't incur the overhead of the repr unless an an error is 
detected (a micro-optimization, true, but an easy one).  I also chose to only 
check that 'fieldnames' is mentioned in the non-variable exception text; 
exactly how the rest of the message text is worded is not part of the API.

--
resolution:  - fixed
stage:  - committed/rejected
status: open - closed

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-11-12 Thread Vajrasky Kok

Vajrasky Kok added the comment:

Here is the preliminary patch.

--
nosy: +vajrasky
Added file: 
http://bugs.python.org/file32582/fix_error_message_write_fields_not_in_fieldnames.patch

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-11-12 Thread Vajrasky Kok

Changes by Vajrasky Kok sky@speaklikeaking.com:


--
components: +Library (Lib)
versions: +Python 3.3, Python 3.4 -Python 2.6

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-10-30 Thread Tomas Grahn

New submission from Tomas Grahn:

When csv.DictWriter.writerow is fed a dict with extra fieldnames (and 
extrasaction='raise') and any of those extra fieldnames aren't strings, a 
TypeError-exception is thrown. To fix the issue; in csv.py, edit the line:
raise ValueError(dict contains fields not in fieldnames:  + , 
.join(wrong_fields))

to:
raise ValueError(dict contains fields not in fieldnames:  + , 
.join(repr(wrong_field) for wrong_field in wrong_fields))

Attached is a patch that fixes the problem (works in both 2.6 and 2.7, I 
haven't tried anything else).

Here is a simple test to demonstrate the problem:

import cStringIO, csv

sio=cStringIO.StringIO()
writer=csv.DictWriter(sio, [foo, bar])
writer.writerow({1:hello, 2:world})

--
files: csv-patch.diff
keywords: patch
messages: 201727
nosy: tomas_grahn
priority: normal
severity: normal
status: open
title: csv.DictWriter can't handle extra non-string fields
type: behavior
versions: Python 2.6, Python 2.7
Added file: http://bugs.python.org/file32425/csv-patch.diff

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-10-30 Thread R. David Murray

R. David Murray added the comment:

I would argue that the TypeError is correct (field names must be strings), even 
though the way it is generated is a bit unorthodox :)

Let's see what others think.

--
nosy: +r.david.murray

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-10-30 Thread R. David Murray

R. David Murray added the comment:

Rereading my post I disagree with myself.  ValueError is probably better in 
this context (the difference between ValueError and TypeError is a bit grey, 
and Python is not necessarily completely consistent about it.)

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-10-30 Thread Tomas Grahn

Tomas Grahn added the comment:

If non-string field names aren't allowed then shouldn't they be caught at an 
earlier stage, rather then when the user feeds writerow a dict with an 
unexpected key?

But why should the field names have to be strings in the first place? 
Everything else is passed through str before being written anyway...

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue19449] csv.DictWriter can't handle extra non-string fields

2013-10-30 Thread R. David Murray

R. David Murray added the comment:

 But why should the field names have to be strings in the first place? 
 Everything else is passed through str before being written anyway...

Good point.

--

___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue19449
___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com