from typing import Iterable
from typing import Hashable


def issubset(a: Iterable[Hashable], b: Iterable[Hashable]) -> bool:
    """Check if **b** contains all elements in **a**."""
    try:
        return a.issubset(b)  # type: ignore

    # **a** does not have the isdisjoint method
    except AttributeError:
        return set(a).issubset(b)

    # **a.issubset** is not a callable or
    # **a** and/or **b** do not consist of hashable elements
    except TypeError as ex:
        if callable(a.issubset):  # type: ignore
            raise ex
        return set(a).issubset(b)