On Thu, Jul 21, 2016 at 9:04 PM, Guido van Rossum <guido@python.org> wrote:
If it really must be two words, how about SizedIterable? That suggests
it's a subclass of Sized and Iterable, which it is. Container doesn't
need separate mention, it's pretty obvious that any Iterable can
implement __contains__, and more people know that Iterable is an ABC
than Container.

In my experiments with type annotations, we recently encountered this exact same issue (variables for which either sets or lists should be valid). My initial solution was almost exactly what you propose here: we wrote a SizedIterable class, simply inheriting from Sized and Iterable.

Ultimately, we didn't find this very satisfying, because we realized that strings are SizedIterables (they're sequences, too), and we really didn't want to allow accidentally passing strings that would be interpreted as iterables of characters. Unfortunately, I don't think there's any good way in Python to specify "any sized iterable that isn't a string".