import re


def isisin(value):
    """
    Return whether or not given value is valid International Securities Identification Number.
    If the value is a valid ISIN, this function returns ``True``, otherwise ``False``.

    Examples::

        >>> isisin('AU0000XVGZA3')
        True

        >>> isisin('DE000BAY0018')
        False

    :param value: string to validate ISIN
    """
    pattern = re.compile(r'^[A-Z]{2}[0-9A-Z]{9}[0-9]$')
    if not pattern.match(value):
        return False

    checksum_str = re.sub(r'[A-Z]', lambda ch: str(int(ch.group(0), 36)), value)
    summation = 0
    should_double = True
    for i in checksum_str[-2::-1]:
        digit = int(i)
        if should_double:
            digit *= 2
            if digit >= 10:
                summation += (digit + 1)
            else:
                summation += digit
        else:
            summation += digit
        should_double = not should_double

    return int(value[-1]) == (10000 - summation) % 10