On Wed, 30 Mar 2022 at 18:09, Stephen J. Turnbull <stephenjturnb...@gmail.com> wrote: > > Chris Angelico writes: > > I don't think, for instance, that json.load() promises anything > > about where it leaves an iterable; in fact, I believe it simply > > reads everything into a string and then parses that. > > It would seem so, the only constraint on the source is that it support > .read().
Yeah. Logically, it ought to be possible and reasonable to build a JSON loader that can consume a file progressively, minimizing memory usage (particularly if there ends up being an error). But that's not what happens. > It's also documented to assume a "file-like object containing > a [single] JSON document" (brackets are my insertion). AFAIK, JSON > doesn't define "document", and a "JSON text" appears to be defined to > be a single JSON value (array, object, number, string, 'true', > 'false', 'null'). If you take that seriously, then you might assume > the file to contain exactly one value, and throw away any excess. That is correct. The standard definition of JSON is that there is a single value (calling it a "document" just implies intent - it's the same thing as any other value, just that most people don't use json.load() on a file that contains the word "false"), with nothing else in the file other than whitespace. Although I have frequently made use of JSONDecoder().raw_decode(), which returns a document and the point where it ends. It still doesn't work with partial reads, but I've used it with chunked formats a number of times. > > It would be worth supporting both byte strings and text strings, > > though, for the same reason that they both support printf formatting. > > Ethan would show up in our nightmares if we didn't! > Actually, I'd like to see that. Nothing wrong with making one's nightmares more interesting. :) ChrisA _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/55J4BG2NZB7KQBXAV4PGYAD2WWS2YRTQ/ Code of Conduct: http://python.org/psf/codeofconduct/