[Python-ideas] reprs of recursive datastructures.

Alexander Belopolsky alexander.belopolsky at gmail.com
Sun Sep 9 00:06:14 CEST 2012


On Sat, Sep 8, 2012 at 5:26 PM, MRAB <python at mrabarnett.plus.com> wrote:
>>
>>     Note that in doctest displays, ellipsis has yet another meaning.  I
>>     agree that this is 3.4 material, and the solution should probably be
>>     something in <>.
>>
>> Ok, I can live with <...>.
>>
> Should we also guarantee that it'll never have any other meaning in
> Python so that this will never happen again?

I was probably not very clear about the problem of having ellipsis
appear as expected output in doctests.  The problem is that '...' has
a special meaning for doctests:

"""
When specified, an ellipsis marker (...) in the expected output can
match any substring in the actual output. ...
""" http://docs.python.org/py3k/library/doctest.html#doctest.ELLIPSIS

This means that <...> will match any angle bracketed repr.  Note that
lists are not the only types affected by this issue.  Dicts, for
example, have the same problem:

>>> d = {}
>>> d[0] = d
>>> d
{0: {...}}
>>> eval('{0: {...}}')
{0: {Ellipsis}}

It is possible the other mutable container types are similarly
affected.  It looks like this problem requires some more though.

If we ever decide to allow non-ASCII characters in repr, my vote for
repr of recursive list will be

>>> "[[\N{ANTICLOCKWISE GAPPED CIRCLE ARROW}]]"
'[[⟲]]'


>>> "\N{WHITE SMILING FACE}"
'☺'



More information about the Python-ideas mailing list