Re: Incompatible change discussion: Pretty printing of ordered dict.

Wes Turner <[email protected]> Fri, 4 Aug 2017 09:36:12 -0500
Newsgroups gmane.comp.python.ipython.devel
Message-ID <CACfEFw86tuNw=2ZdzB7_Y_wfUUG_3xwvMsARJfoS6hSaRoDTPQ@mail.gmail.com>
--===============7580443425220674480==
Content-Type: multipart/alternative; boundary="94eb2c1cd4883765de0555ee6b10"

--94eb2c1cd4883765de0555ee6b10
Content-Type: text/plain; charset="UTF-8"

```python
repr(dict)

import pprint
pprint.pprint(dict)
print(pprint.pformat(dict)
```

On Friday, August 4, 2017, MinRK <[email protected]> wrote:

> I'm pretty strongly in favor of keeping the sorting in our default
> pretty-printing. It's extremely valuable for interacting with dictionaries
> to have consistent, predictable display. There are plenty of ways to
> illustrate dict ordering, such as by iterating through the dict , e.g.
> `list(dict)`.
>
> -Min
>
> On Thu, Aug 3, 2017 at 6:38 PM, Carl Smith <[email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>
>> I'm with Thomas.
>>
>> On Wed, 2 Aug 2017 22:30 Wes Turner, <[email protected]
>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>>
>>> Maybe a SORT_DICT_KEYS bool configuration setting? Really practically
>>> only in order to teach:
>>>
>>> - dict
>>>   - https://docs.python.org/3/tutorial/datastructures.html#dictionaries
>>> - PYTHONHASHSEED / -R
>>>   - https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEED
>>>   - https://docs.python.org/3/using/cmdline.html#cmdoption-R
>>> - collections.OrderedDict (is backwards compatible)
>>>   - https://docs.python.org/3/library/collections.html#ordered
>>> dict-objects
>>>
>>>
>>>
>>> On Wednesday, August 2, 2017, Matthias Bussonnier <
>>> [email protected]
>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>>>
>>>> Hi all,
>>>>
>>>> As you may or may not be aware, with Python 3.6 the dictionary are
>>>> ordered by default. It is technically an implementation detail, though
>>>> some people would love for it not to.
>>>>
>>>> Regardless, IPython has for a long time pretty-printed the dictionary
>>>> with _sorted_ keys, this thus prevent to teach python and show that
>>>> dictionaries maintain order. Thus there is the question of wether we
>>>> should disable sorting keys while pretty-printing.
>>>>
>>>> https://github.com/ipython/ipython/issues/10110
>>>>
>>>> This seem like a minor change, but I'd like to know if some of you are
>>>> _relying_ on the ordering of dict when they are printed, or have
>>>> compelling arguments against (or for) removing sorting of the keys
>>>> before pretty_printing.
>>>>
>>>> If you care about the above subject, please have your voice heard in
>>>> above issue.
>>>>
>>>> Thanks,
>>>> --
>>>> Matthias
>>>> _______________________________________________
>>>> IPython-dev mailing list
>>>> [email protected]
>>>> https://mail.python.org/mailman/listinfo/ipython-dev
>>>>
>>> _______________________________________________
>>> IPython-dev mailing list
>>> [email protected]
>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>
>>> https://mail.python.org/mailman/listinfo/ipython-dev
>>>
>>
>> _______________________________________________
>> IPython-dev mailing list
>> [email protected]
>> <javascript:_e(%7B%7D,'cvml','[email protected]');>
>> https://mail.python.org/mailman/listinfo/ipython-dev
>>
>>
>

--94eb2c1cd4883765de0555ee6b10
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div>```python</div>repr(dict)<div><br></div><div>import pprint</div><div>p=
print.pprint(dict)</div><div>print(pprint.pformat(dict)</div><div>```<br><b=
r>On Friday, August 4, 2017, MinRK &lt;<a href=3D"mailto:[email protected]=
om">[email protected]</a>&gt; wrote:<br><blockquote class=3D"gmail_quote=
" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><=
div dir=3D"ltr">I&#39;m pretty strongly in favor of keeping the sorting in =
our default pretty-printing. It&#39;s extremely valuable for interacting wi=
th dictionaries to have consistent, predictable display. There are plenty o=
f ways to illustrate dict ordering, such as by iterating through the dict ,=
 e.g. `list(dict)`.<div><br></div><div>-Min</div></div><div class=3D"gmail_=
extra"><br><div class=3D"gmail_quote">On Thu, Aug 3, 2017 at 6:38 PM, Carl =
Smith <span dir=3D"ltr">&lt;<a href=3D"javascript:_e(%7B%7D,&#39;cvml&#39;,=
&#39;[email protected]&#39;);" target=3D"_blank">[email protected]</a=
>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 =
0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir=3D"ltr">I&#39;=
m with Thomas. </p><div><div>
<br><div class=3D"gmail_quote"><div dir=3D"ltr">On Wed, 2 Aug 2017 22:30 We=
s Turner, &lt;<a href=3D"javascript:_e(%7B%7D,&#39;cvml&#39;,&#39;wes.turne=
[email protected]&#39;);" target=3D"_blank">[email protected]</a>&gt; wrote:<b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border=
-left:1px #ccc solid;padding-left:1ex">Maybe a SORT_DICT_KEYS bool configur=
ation setting? Really practically only in order to teach:<div><br></div><di=
v>- dict</div><div>=C2=A0 -=C2=A0<a href=3D"https://docs.python.org/3/tutor=
ial/datastructures.html#dictionaries" target=3D"_blank">https://docs.python=
.org/3/tu<wbr>torial/datastructures.html#dic<wbr>tionaries</a></div><div>-=
=C2=A0<span style=3D"color:rgb(34,34,34);font-family:Roboto-Regular,Helveti=
caNeue,Arial,sans-serif;font-size:14px">PYTHONHASHSEED / -R</span></div><di=
v><span style=3D"color:rgb(34,34,34);font-family:Roboto-Regular,HelveticaNe=
ue,Arial,sans-serif;font-size:14px">=C2=A0 -=C2=A0</span><font color=3D"#22=
2222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-serif"><span style=
=3D"font-size:14px"><a href=3D"https://docs.python.org/3/using/cmdline.html=
#envvar-PYTHONHASHSEED" target=3D"_blank">https://docs.python.org/3/us<wbr>=
ing/cmdline.html#envvar-PYTHON<wbr>HASHSEED</a></span></font></div><div><fo=
nt color=3D"#222222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-ser=
if"><span style=3D"font-size:14px">=C2=A0 - <a href=3D"https://docs.python.=
org/3/using/cmdline.html#cmdoption-R" target=3D"_blank">https://docs.python=
.org/3/usin<wbr>g/cmdline.html#cmdoption-R</a></span></font></div><div><fon=
t color=3D"#222222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-seri=
f"><span style=3D"font-size:14px">- collections.OrderedDict (is backwards c=
ompatible)</span></font></div><div><span style=3D"color:rgb(34,34,34);font-=
family:Roboto-Regular,HelveticaNeue,Arial,sans-serif;font-size:14px">=C2=A0=
 -=C2=A0<a href=3D"https://docs.python.org/3/library/collections.html#order=
eddict-objects" target=3D"_blank">https://docs.python.org/3/li<wbr>brary/co=
llections.html#ordered<wbr>dict-objects</a></span></div><div><font color=3D=
"#222222" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-serif"><span s=
tyle=3D"font-size:14px"><br></span></font></div><div><font color=3D"#222222=
" face=3D"Roboto-Regular, HelveticaNeue, Arial, sans-serif"><span style=3D"=
font-size:14px"><br></span></font><br>On Wednesday, August 2, 2017, Matthia=
s Bussonnier &lt;<a href=3D"javascript:_e(%7B%7D,&#39;cvml&#39;,&#39;busson=
[email protected]&#39;);" target=3D"_blank">[email protected]=
om</a>&gt; wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 =
0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi all,<br>
<br>
As you may or may not be aware, with Python 3.6 the dictionary are<br>
ordered by default. It is technically an implementation detail, though<br>
some people would love for it not to.<br>
<br>
Regardless, IPython has for a long time pretty-printed the dictionary<br>
with _sorted_ keys, this thus prevent to teach python and show that<br>
dictionaries maintain order. Thus there is the question of wether we<br>
should disable sorting keys while pretty-printing.<br>
<br>
<a href=3D"https://github.com/ipython/ipython/issues/10110" target=3D"_blan=
k">https://github.com/ipython/ipy<wbr>thon/issues/10110</a><br>
<br>
This seem like a minor change, but I&#39;d like to know if some of you are<=
br>
_relying_ on the ordering of dict when they are printed, or have<br>
compelling arguments against (or for) removing sorting of the keys<br>
before pretty_printing.<br>
<br>
If you care about the above subject, please have your voice heard in<br>
above issue.<br>
<br>
Thanks,<br>
--<br>
Matthias<br>
______________________________<wbr>_________________<br>
IPython-dev mailing list<br>
<a>[email protected]</a><br>
<a href=3D"https://mail.python.org/mailman/listinfo/ipython-dev" target=3D"=
_blank">https://mail.python.org/mailma<wbr>n/listinfo/ipython-dev</a><br>
</blockquote></div>
______________________________<wbr>_________________<br>
IPython-dev mailing list<br>
<a href=3D"javascript:_e(%7B%7D,&#39;cvml&#39;,&#39;[email protected]&=
#39;);" target=3D"_blank">[email protected]</a><br>
<a href=3D"https://mail.python.org/mailman/listinfo/ipython-dev" rel=3D"nor=
eferrer" target=3D"_blank">https://mail.python.org/mailma<wbr>n/listinfo/ip=
ython-dev</a><br>
</blockquote></div>
</div></div><br>______________________________<wbr>_________________<br>
IPython-dev mailing list<br>
<a href=3D"javascript:_e(%7B%7D,&#39;cvml&#39;,&#39;[email protected]&=
#39;);" target=3D"_blank">[email protected]</a><br>
<a href=3D"https://mail.python.org/mailman/listinfo/ipython-dev" rel=3D"nor=
eferrer" target=3D"_blank">https://mail.python.org/mailma<wbr>n/listinfo/ip=
ython-dev</a><br>
<br></blockquote></div><br></div>
</blockquote></div>

--94eb2c1cd4883765de0555ee6b10--

--===============7580443425220674480==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
IPython-dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/ipython-dev

--===============7580443425220674480==--