[Python-ideas] reprs of recursive datastructures.

MRAB python at mrabarnett.plus.com
Sun Sep 9 00:27:24 CEST 2012


On 08/09/2012 23:06, Alexander Belopolsky wrote:
> 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}]]"
> '[[⟲]]'
>
Or:

 >>> "[[\N{CLOCKWISE GAPPED CIRCLE ARROW}]]"
'[[⟳]]'

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




More information about the Python-ideas mailing list