[issue4783] json documentation needs a BAWM (Big A** Warning Message)

2008-12-30 Thread David M. Beazley

New submission from David M. Beazley beaz...@users.sourceforge.net:

The json module is described as having an interface similar to pickle:
  
json.dump()
json.dumps()
json.load()
json.loads()

I think it would be a WISE idea to add a huge warning message to the 
documentation that these functions should *NOT* be used to serialize or 
unserialize multiple objects on the same file stream like pickle. For 
example:

f = open(stuff,w)
json.dump(obj1, f)
json.dump(obj2, f)# NO!  FLAMING DEATH!

f = open(stuff,r)
obj1 = json.load(f)  
obj2 = json.load(f)   # NO!  EXTRA CRIPSY FLAMING DEATH!

For one, it doesn't work. load() actually reads the whole file into a 
big string and tries to parse it as a single object.  If there are 
multiple objects in the file, you get a nasty exeption.   Second, I'm 
not even sure this is technically allowed by the JSON spec.

As far as I call tell, concatenating JSON objects together in the same 
file falls into the same category as concatenating two HTML documents 
together in the same file (something you just don't do).

Related: json.load() should probably not be used on any streaming input 
source such as a file wrapped around a socket.  The first thing it does 
is consume the entire input by calling f.read()---which probably not 
what someone is expecting (and it might even cause the whole program to 
hang).

--
assignee: georg.brandl
components: Documentation
messages: 78547
nosy: beazley, georg.brandl
severity: normal
status: open
title: json documentation needs a BAWM (Big A** Warning Message)
type: behavior
versions: Python 2.6, Python 3.0

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



[issue4783] json documentation needs a BAWM (Big A** Warning Message)

2008-12-30 Thread Benjamin Peterson

Changes by Benjamin Peterson benja...@python.org:


--
assignee: georg.brandl - bob.ippolito
nosy: +bob.ippolito

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



[issue4783] json documentation needs a BAWM (Big A** Warning Message)

2008-12-30 Thread Bob Ippolito

Bob Ippolito b...@redivi.com added the comment:

You're the first person to ever raise any of these issues in the slightly 
more than 3 years that the package has been around (by other names), so 
I'm not sure such a warning needs to be that big.

JSON doesn't really have any framing, so serializing more than one 
document to or from the same place doesn't work so well. It's not even 
talked about in the spec, and I've never seen someone try it before.

--
priority:  - low

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



[issue4783] json documentation needs a BAWM (Big A** Warning Message)

2008-12-30 Thread David M. Beazley

David M. Beazley beaz...@users.sourceforge.net added the comment:

Just consider me to be an impartial outside reviewer.  Hypothetically, 
let's say I'm a Python programmer who knows a thing or two about 
standard library modules (like pickle), but I'm new to JSON so I come 
looking at the json module documentation.   The documentation tells me 
it uses the same interface as pickle and marshal (even naming those two 
modules right off the bat).   So, right away, I'm thinking the module 
probably does all of the usual things that pickle and marshal can do.  
For instance, serializing multiple objects to the same stream.   
However, it doesn't work this way and the only way to find out that it 
doesn't work is to either try it and get an error, or to read the source 
code and figure it out.

I'm not reporting this as an end-user of the json module, but as a 
Python book author who is trying to get things right and to be precise.   I 
think if you're going to keep the pickle and marshal reference I would 
add the warning message.  Otherwise, I wouldn't mention pickle or 
marshal at all.

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



[issue4783] json documentation needs a BAWM (Big A** Warning Message)

2008-12-30 Thread Bob Ippolito

Bob Ippolito b...@redivi.com added the comment:

Ok, I've added some notes to the trunk of simplejson's documentation. Not 
sure when/if that'll hit the Python trunks, I've been having a hard time 
getting my other patches to sync up with simplejson through: 
http://bugs.python.org/issue4136

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



[issue4783] json documentation needs a BAWM (Big A** Warning Message)

2008-12-30 Thread David M. Beazley

David M. Beazley beaz...@users.sourceforge.net added the comment:

Thanks!  Hopefully I'm not giving you too much work to do :-).


Cheers,
Dave

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