Issue 19103: Use pprint in displayhook (original) (raw)

Issue19103

Created on 2013-09-27 11:41 by serhiy.storchaka, last changed 2022-04-11 14:57 by admin.

Files
File name Uploaded Description Edit
displayhook_pprint.patch serhiy.storchaka,2013-09-27 11:41 review
displayhook_pprint_2.patch serhiy.storchaka,2013-09-27 14:11 review
Messages (4)
msg198468 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2013-09-27 11:41
pprint.pprint() produces more human readable output than print(repr()) which is used in sys.displayhook(). The proposed patch changes sys.displayhook in site.py. You still can access original displayhook as sys.__displayhook__.
msg198477 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2013-09-27 14:11
In second patch the COLUMNS environment variable is used to determine pprint's width.
msg198556 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2013-09-28 21:52
(in the patch, import of sys and pprint should be done once at module level and not repeated with every line of interactive output). > pprint.pprint() produces more human readable output than print(repr()) which is used in sys.displayhook() Only sometimes, and when it is not, the result can be *much* worse. For instance, try list(range(40)) with the two options. On windows, pprint.pprint(list(range(300))) will not even fit in the default 300 line output buffer of the standard interpreter. This is not to mention doctest and other test breakage. I believe the majority consensus on python-ideas was to reject this until pprint is much improved, and then reconsider. I agree with that. As I said on the list, I think this is more feasible for environments (like Idle) where it could be turned on and off, or invoked to re-display an output where pprint *would* be better.
msg198646 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2013-09-29 20:22
> (in the patch, import of sys and pprint should be done once at module level and not repeated with every line of interactive output). See a comment at the start of the Lib/_sitebuiltins.py file. Yes, importing sys in the function is redundant. > For instance, try list(range(40)) with the two options. Well, I have opened for this. > This is not to mention doctest and other test breakage. AFAIK doctests doesn't test output longer than 80 characters. > I believe the majority consensus on python-ideas was to reject this until pprint is much improved, and then reconsider. There are other pprint-related issue which are opened long time without any progress (e.g. ). I intend making progress on issues which are required for fixing pprint enough to be reasonable replacement for displayhook.
History
Date User Action Args
2022-04-11 14:57:51 admin set github: 63302
2013-09-29 20:22:18 serhiy.storchaka set dependencies: + Add compact mode to pprintmessages: +
2013-09-28 21:52:43 terry.reedy set nosy: + rhettinger
2013-09-28 21:52:05 terry.reedy set nosy: + terry.reedymessages: +
2013-09-27 15:12:04 serhiy.storchaka set dependencies: + Use backslashreplace in pprint, pprint produces invalid output for long strings
2013-09-27 14:11:59 serhiy.storchaka set files: + displayhook_pprint_2.patchmessages: +
2013-09-27 11:41:47 serhiy.storchaka create