Source code for sigmaepsilon.core.typing

# -*- coding: utf-8 -*-
from typing import Hashable
import six

try:
    from collections.abc import Iterable
except ImportError:
    from collections import Iterable


__all__ = ["issequence", "ishashable"]


[docs]def issequence(arg) -> bool: """ Returns `True` if `arg` is any kind of iterable, but not a string, returns `False` otherwise. Examples -------- The formatter to use to print a floating point number with 4 digits: >>> from sigmaepsilon.core.typing import issequence >>> issequence([1, 2]) True To print the actual value as a string: >>> issequence('lorem ipsum') False """ return ( isinstance(arg, Iterable) and not isinstance(arg, six.string_types) )
[docs]def ishashable(obj): """ Returns `True` if `obj` is hashable. """ return isinstance(obj, Hashable)