On Fri., Oct. 11, 2019, 2:38 a.m. Neil Girdhar, <mistersheik(a)gmail.com>
wrote:
>
>
> On Fri, Oct 11, 2019 at 2:28 AM Andrew Barnert <abarnert(a)yahoo.com> wrote:
>
>> > On Oct 10, 2019, at 22:13, Neil Girdhar <mistersheik(a)gmail.com> wrote:
>> >
>> > That's funny, I always thought of that as legacy. The iterator
>> protocol has been a special case in so many proposals I've seen on this
>> list. I think it's really ugly. Instead of
>> collections.abc.OldStyleSequence, what do you think of adding something
>> like InfiniteSequence to collections.abc instead? It's basically Sequence
>> without __len__, __reversed__, or __count__. I don't see it getting much
>> use though.
>>
>> Are you proposing that this type isn’t allowed to have those methods (as
>> opposed to just not being required to)?
>
>
> Not required. Just like if we added a row to the table. So, the point of
> this mixin would be to implement __contains__ __iter__ and __index__ given
> __getitem__.
>
>
>> If so that would be a unique ABC, and a pretty weird one. If not, isn’t
>> this exactly equivalent to the original proposal, but just with a different
>> name? And I think it’s a pretty misleading name. Especially if the subclass
>> hook is structural (method-check), because then it would pick up Sequence
>> and Mapping types even though they aren’t infinite sequences. For that
>> matter, not even every useful old-style sequence is infinite; that’s just
>> the most obvious example everyone comes up with first.
>>
>
> Yeah, those are all good points. After sending, I realized, that it would
> be nicer as a base class of Sequence. I guess I'm for the proposal then.
> I skipped reading the big debate about structural checks because I think if
> you really care about this, you should probably either inherit from the ABC
> or register yourself with it.
>
> Anyway, I guess we pretty much agree then. I just wanted to push against
> legitimizing the sequence protocol in favor of explicitly inheriting from a
> mixin (whatever you want to call it, GenericSequence? AbstractSequence?
> PossiblyInfiniteSequence?) Inheritance like this is a nice declaration of
> intent. Even if you just implemented __getitem__, I think you would have
> to have a comment to make the code clear anyway.
>
>
>> Anyway, I don’t want to put words in Steven’s mouth; maybe this would fit
>> what he wanted. But I suspect it wouldn’t.
>>
>