<div>The CPython test suite says specifically<br></div><div><br></div><div><div># note: this is an internal undocumented API</div><div># don&#39;t rely on it in your own programs</div><div><br></div><div>so I don&#39;t feel too bad about it. :)</div>
<br><div class="gmail_quote">On Fri, Oct 31, 2008 at 3:12 PM, Michael Foord <span dir="ltr">&lt;<a href="mailto:fuzzyman@voidspace.org.uk">fuzzyman@voidspace.org.uk</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hello,<br>
<br>
Well, I guess this isn&#39;t a bug (its only a hint) - but IronPython doesn&#39;t use length hint. :-)<br>
<br>
CPython<br>
&gt;&gt;&gt; class X(object):<br>
... &nbsp;def __iter__(self):<br>
... &nbsp; return iter([1,2,3])<br>
... &nbsp;def __length_hint__(self):<br>
... &nbsp; print &#39;length hint&#39;<br>
... &nbsp; return 3<br>
...<br>
&gt;&gt;&gt; x = X()<br>
&gt;&gt;&gt; list(x)<br>
length hint<br>
[1, 2, 3]<br>
<br>
IronPython<br>
&gt;&gt;&gt; class X(object):<br>
... &nbsp;def __iter__(self):<br>
... &nbsp; return iter([1,2,3])<br>
... &nbsp;def __length_hint__(self):<br>
... &nbsp; print &#39;length hint&#39;<br>
... &nbsp; return 3<br>
...<br>
&gt;&gt;&gt; x = X()<br>
&gt;&gt;&gt; list(x)<br>
[1, 2, 3]<br>
&gt;&gt;&gt;<br>
<br>
CPython uses it as an optimisation to preallocate space for the list.<br>
<br>
You can bet somebody, somewhere is writing code that depends on length hint being called... Actually probably not, but it&#39;s one of those methods like &#39;__reversed__&#39; and &#39;__missing__&#39; that I&#39;ve only recently discovered. I was impressed that IronPython supported &#39;__missing__&#39; by the way.<br>

<br>
Michael<br>
<br>
-- <br>
<a href="http://www.ironpythoninaction.com/" target="_blank">http://www.ironpythoninaction.com/</a><br>
<a href="http://www.voidspace.org.uk/blog" target="_blank">http://www.voidspace.org.uk/blog</a><br>
<br>
<br>
_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.ironpython.com" target="_blank">Users@lists.ironpython.com</a><br>
<a href="http://lists.ironpython.com/listinfo.cgi/users-ironpython.com" target="_blank">http://lists.ironpython.com/listinfo.cgi/users-ironpython.com</a><br>
</blockquote></div><br></div>