Only one arg must not raise a Certifier exception when called overall.
    Raise the specified exception on failure.

    :params Certifier a:
        The first certifiers to call
    :params Certifier b:
        The second certifiers to call
    :param Exception exc:
        Callable that is raised if XOR fails.

def XOR(a, b, exc=CertifierValueError('Expected at least one certified value')):
    """
    Only one arg must not raise a Certifier exception when called overall.
    Raise the specified exception on failure.

    :params Certifier a:
        The first certifiers to call
    :params Certifier b:
        The second certifiers to call
    :param Exception exc:
        Callable that is raised if XOR fails.
    """
    errors = []

    for certifier in [a, b]:
        try:
            certifier()
        except CertifierError as e:
            errors.append(e)

    if len(errors) != 1:
        if exc is not None:
            raise exc