<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jul 22, 2013 at 2:44 PM, Ben North <span dir="ltr"><<a href="mailto:ben@redfrontdoor.org" target="_blank">ben@redfrontdoor.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
A friend of mine, Ruadhan O'Flanagan, came across a bug which turned out<br>
to be the one noted in [<a href="http://bugs.python.org/issue18019" target="_blank">http://bugs.python.org/issue18019</a>], i.e.:<br>
<br>
>>> d={}<br>
>>> d[42]=d.viewvalues()<br>
>>> d<br>
<segmentation fault><br>
<br>
This issue has been fixed in hg; the behaviour now is that a<br>
RuntimeError is produced for a recursive dictionary view:<br>
<br>
>>> d={}<br>
>>> d[42]=d.viewvalues()<br>
>>> d # (output line-broken:)<br>
{42: Traceback (most recent call last):<br>
  File "<stdin>", line 1, in <module><br>
RuntimeError: maximum recursion depth exceeded<br>
  while getting the repr of a list<br>
<br>
Before finding this, though, I'd investigated and made a patch which<br>
produces a similar "..." output to a recursive dictionary.  Reworking<br>
against current 2.7, the behaviour would be:<br>
<br>
>>> x={}<br>
>>> x[42]=x<br>
>>> x # existing behaviour for dictionaries:<br>
{42: {...}}<br>
<br>
>>> d={}<br>
>>> d[42]=d.viewvalues()<br>
>>> d # new behaviour:<br>
{42: dict_values([...])}<br>
>>> d[43]=d.viewitems()<br>
>>> d # (output line-broken:)<br>
{42: dict_values([..., dict_items([(42, ...), (43, ...)])]),<br>
 43: dict_items([(42, dict_values([..., ...])), (43, ...)])}<br>
<br>
Attached is the patch, against current 2.7 branch.  If there is interest<br>
in applying this, I will create a proper patch (changelog entry, fix to<br>
Lib/test/test_dictviews.py, etc.).<br></blockquote><div><br></div><div>Mailing lists are where patches go to get lost and die. :)  Post it on an issue on <a href="http://bugs.python.org">bugs.python.org</a>.  Given that the RuntimeError fix has been released, your proposed ... behavior is arguably a new feature so I'd only expect this to make sense for consideration in 3.4, not 2.7.  (if accepted at all)</div>

<div><br></div><div>-gps</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Thanks,<br>
<br>
Ben.<br>
<br>_______________________________________________<br>
Python-Dev mailing list<br>
<a href="mailto:Python-Dev@python.org">Python-Dev@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-dev" target="_blank">http://mail.python.org/mailman/listinfo/python-dev</a><br>
Unsubscribe: <a href="http://mail.python.org/mailman/options/python-dev/greg%40krypto.org" target="_blank">http://mail.python.org/mailman/options/python-dev/greg%40krypto.org</a><br>
<br></blockquote></div><br></div></div>