<div dir="ltr">[Adding python-ideas back -- I'm not sure why you dropped it but it looks like an oversight, not intentional]<br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 1, 2016 at 2:25 PM, Andrew Barnert <span dir="ltr"><<a href="mailto:abarnert@yahoo.com" target="_blank">abarnert@yahoo.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Dec 27, 2015, at 09:04, Guido van Rossum <<a href="mailto:guido@python.org">guido@python.org</a>> wrote:<br>
<br>
> If we want some way to turn something that just defines __getitem__ and __len__ into a proper sequence, it should just be made to inherit from Sequence, which supplies the default __iter__ and __reversed__. (Registration is *not* good enough here.)<br>
<br>
</span>So, if I understand correctly, you're hoping that we can first make the old-style sequence protocol unnecessary, except for backward compatibility, and then maybe change the docs to only mention it for backward compatibility, and only then deprecate it?<br></blockquote><div><br></div><div>That sounds about right.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I think it's worth doing those first two steps, but not actually deprecating it, at least while Python 2.7 is still around; otherwise, for dual-version code, something like Steven D'Aprano's "Squares" type would have to copy Indexable from the 3.x stdlib or get it from some third-party module like six or backports.collections.<span class=""><br></span></blockquote><div><br></div><div>Yes, that's fine. Deprecation sometimes just has to take a really long time.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> If we really want a way to turn something that just supports __getitem__ into an Iterable maybe we can provide an additional ABC for that purpose; let's call it a HalfSequence until we've come up with a better name. (We can't use Iterable for this because Iterable should not reference __getitem__.)<br>
<br>
</span>#25988 (using Nick's name Indexable, and the details from that post).<span class=""><br></span></blockquote><div><br></div><div>Oh, interesting. Though I have misgivings about that name.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
> I also think it's fine to introduce Reversible as another ABC and carefully fit it into the existing hierarchy. It should be a one-trick pony and be another base class for Sequence; it should not have a default implementation. (But this has been beaten to death in other threads -- it's time to just file an issue with a patch.)<br>
<br>
</span>#25987.</blockquote></div><br></div><div class="gmail_extra">Thanks!<br clear="all"></div><div class="gmail_extra"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>