from typing import Callable
from typing import Any
from typing import Iterable
from typing import Tuple
from typing import List


def group_by_pred(
    pred: Callable[[Any], bool], iterable: Iterable[Any]
) -> Tuple[List[Any], List[Any]]:
    """Splits items in a sequence into two lists, one containing
    items matching the predicate, and another containing those that
    do not."""
    is_true = []  # type: List[Any]
    is_false = []  # type: List[Any]
    for item in iterable:
        if pred(item):
            is_true.append(item)
        else:
            is_false.append(item)

    return is_true, is_false