[New-bugs-announce] [issue45611] pprint - low width overrides depth folding

Ian Currie report at bugs.python.org
Tue Oct 26 03:40:20 EDT 2021


New submission from Ian Currie <iansedano at gmail.com>:

Reproducible example:

>>> from pprint import pprint
>>> data = [["aaaaaaaaaaaaaaaaaa"],[2],[3],[4],[5]]
>>> pprint(data)
[["aaaaaaaaaaaaaaaaaa"], [2], [3], [4], [5]]

>>> pprint(data, depth=1)
[[...], [...], [...], [...], [...]]

>>> pprint(data, depth=1, width=7)
[[...],
 [...],
 [...],
 [...],
 [...]]

>>> pprint(data, depth=1, width=6)
[['aaaaaaaaaaaaaaaaaa'],
 [2],
 [3],
 [4],
 [5]]

The depth "folds" everything deeper than 1 level. Then if you lower the width of the output enough, what was once on one line, will now be split by newlines.

The bug is, if you lower the width below seven characters. Which is the length of `[[...],`  It seems to override the `depth` parameter and print the everything with no folding. This is true of deeply nested structures too.

Expected behavior: for the folding `...` to remain.

Why put the width so low?

I came across this because of the behavior of `compact`:

By default, if a data structure can fit on one line, it will be displayed on one line. `compact` only affects sequences that are longer than the given width.

**There is no way to force compact as False for short items**, so as to make sure all items, even short ones, appear on their own line.

[1,2,3] - will always appear on its own line, there is no way to make it appear like:

[1,
 2,
 3]

The only way is by setting a very low width.

----------
components: Library (Lib)
messages: 405027
nosy: iansedano
priority: normal
severity: normal
status: open
title: pprint - low width overrides depth folding
type: behavior
versions: Python 3.10

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


More information about the New-bugs-announce mailing list