[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