def iterable(obj) -> bool:
    """
    Determines if this object satisfies the iterable interface, which
    requires it to support either ``__iter__`` or ``__getitem__``.
    """
    return hasattr(obj, '__iter__') or hasattr(obj, '__getitem__')