from typing import Iterable


def is_iterable_but_not_string(obj):
    """
    Determine if an object has iterable, list-like properties.
    Importantly, this functions *does not* consider a string
    to be list-like, even though Python strings are iterable.

    """
    return isinstance(obj, Iterable) and not isinstance(obj, str)