def flatten(iterable):
    '''This function allows a simple a way to iterate over a "complex" iterable, for example,
    if the input [12, [23], (4, 3), "lkjasddf"], this will return an Iterable that returns
    12, 23, 4, 3 and "lkjasddf".

    Args:
        iterable (Iterable) - A complex iterable that will be flattened

    Returns:
        (Iterable): An Iterable that flattens multiple interables'''
    return itertools.chain.from_iterable(a if isinstance(a,Iterable) and not isinstance(a, str) else [a] for a in iterable)
def flatten ( iterable ) : return itertools . chain . from_iterable ( a if isinstance ( a , Iterable ) and not isinstance ( a , str ) else [ a ] for a in iterable )
This function allows a simple a way to iterate over a "complex" iterable, for example,
    if the input [12, [23], (4, 3), "lkjasddf"], this will return an Iterable that returns
    12, 23, 4, 3 and "lkjasddf".

    Args:
        iterable (Iterable) - A complex iterable that will be flattened

    Returns:
        (Iterable): An Iterable that flattens multiple interables