from typing import Union
from typing import List
from typing import Tuple
from typing import Iterable


def flatten(lst: Union[List, Tuple]) -> List:
    """Recursive function that flatten a list (of potential `Iterable` objects)."""
    if isinstance(lst, Iterable) and not isinstance(lst, (str, bytes)):
        return [a for i in lst for a in flatten(i)]
    else:
        return [lst]