[issue45644] Make json.tool soak up input before opening output for writing

Chris Wesseling report at bugs.python.org
Mon Nov 8 04:06:27 EST 2021


Chris Wesseling <chris.wesseling at protonmail.com> added the comment:

@Remi

I left the current behaviour for --json-lines untouched, on purpose.
My reasoning was that the json-lines format is often seen in JSON streaming, and I didn't want to break the case where the input is an endless stream from stdin or a named pipe. And to keep the patch simple with minimal change to the exposed interface.

Simplest fix for the case in this current code would be: iff infile equals outfile (minding their types), call list(objs) on the generator[1] to materialise it in one go. The only case where that would break would be when infile == outfile and is a named pipe, but I can't imagine why I would want to both read and write to the same FIFO, other than comedic effect.

  [1] https://github.com/python/cpython/blob/122ca4d73faba279a579aa2011fa34661ce537a2/Lib/json/tool.py#L65

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue45644>
_______________________________________


More information about the Python-bugs-list mailing list