<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 21, 2016 at 4:43 PM Guido van Rossum <<a href="mailto:guido@python.org">guido@python.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">At Dropbox I see a lot of people who want to start using type<br>
annotations (PEP 484, mypy) struggle with the collection ABCs.<br>
<br>
It's pretty common to want to support both sets and lists of values<br></blockquote><div><br></div><div>Are these folks dissatisfied with a union type: <span style="line-height:1.5">``Union[Sequence, Set]``?</span></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">(Another useful concept is "reiterable", i.e. an Iterable that can be<br>
iterated over multiple times -- there's no ABC to indicate this<br>
concept. Sequence, Set and Mapping all support this concept, Iterator<br>
does not include it, but Iterable is wishy-washy.)<br></blockquote><div><br></div><div>"Reiterable" seems to cause vocabulary confusion regularly on this list. It also has a common case for runtime checking:</div><div><br></div><div>    if not isinstance(iterable, Reiterable):</div><div>        iterable = list(iterable)</div><div><br></div><div>It's hard to think of a good name to describe ``Union[Iterable, Sized, Container]`` and it'd still have the confusion of whether it's re-iterable.<br></div><div><br></div><div>Does the concept of "reiterable" imply that an iteration does not mutate the object? If so, then if something is both Reiterable and Sized, it should also be a Container.</div></div></div>