from typing import Dict
from typing import Hashable
from typing import Any
from typing import Sequence
from typing import Optional


def all_keys_present(
    dictionary: Dict[Hashable, Any],
    keys: Sequence[Hashable],
    strict: Optional[bool] = False,
) -> bool:
    """
    Checks whether all provided keys are present in the dictionary.

    Arguments:
        dictionary: The dictionary to be checked.
        keys: A sequence of hashable values to be searched for.
            Must not contain any duplicate values.
        strict: If `True`, this will check that the provided
            keys 1:1 match the keys in the dictionary.

    Returns:
        `True` if all provided keys were found in the dictionary,
            `False` otherwise.
    """
    if not strict:
        return all(k in dictionary.keys() for k in keys)

    else:
        return set(dictionary.keys()) == set(keys)