Here’s a fun thing with Python’s type annotations.
Sometimes one might use
Iterable as a type annotation to try to indicate something might be a set, a list, or a
Iterable really just means something that implements
for char in "abc": print(char) # a # b # c
And “a” is a
str, just like “abc” is a
So this type checks:
my_var: Iterable[str] = "abc" (!!!).
from typing import Iterable, List # these all pass type check a: str = "a" b: Iterable[str] = "abc" # woops? c: Iterable[str] = ["abc", "def"] # this fails type check d: List[str] = "abc"
A fun footgun to be aware of :). Get more specific with types to avoid unexpectedly correct-but-not-what-was-meant annotations.