def pymmh3_hash64(key: Union[bytes, bytearray],
                  seed: int = 0,
                  x64arch: bool = True) -> Tuple[int, int]:
    """
    Implements 64bit murmur3 hash, as per ``pymmh3``. Returns a tuple.

    Args:
        key: data to hash
        seed: seed
        x64arch: is a 64-bit architecture available?

    Returns:
        tuple: tuple of integers, ``(signed_val1, signed_val2)``

    """

    hash_128 = pymmh3_hash128(key, seed, x64arch)

    unsigned_val1 = hash_128 & 0xFFFFFFFFFFFFFFFF  # low half
    if unsigned_val1 & 0x8000000000000000 == 0:
        signed_val1 = unsigned_val1
    else:
        signed_val1 = -((unsigned_val1 ^ 0xFFFFFFFFFFFFFFFF) + 1)

    unsigned_val2 = (hash_128 >> 64) & 0xFFFFFFFFFFFFFFFF  # high half
    if unsigned_val2 & 0x8000000000000000 == 0:
        signed_val2 = unsigned_val2
    else:
        signed_val2 = -((unsigned_val2 ^ 0xFFFFFFFFFFFFFFFF) + 1)

    return signed_val1, signed_val2
def pymmh3_hash64 ( key : Union [ bytes , bytearray ] , seed : int = 0 , x64arch : bool = True ) -> Tuple [ int , int ] : hash_128 = pymmh3_hash128 ( key , seed , x64arch ) unsigned_val1 = hash_128 & 0xFFFFFFFFFFFFFFFF if unsigned_val1 & 0x8000000000000000 == 0 : signed_val1 = unsigned_val1 else : signed_val1 = - ( ( unsigned_val1 ^ 0xFFFFFFFFFFFFFFFF ) + 1 ) unsigned_val2 = ( hash_128 >> 64 ) & 0xFFFFFFFFFFFFFFFF if unsigned_val2 & 0x8000000000000000 == 0 : signed_val2 = unsigned_val2 else : signed_val2 = - ( ( unsigned_val2 ^ 0xFFFFFFFFFFFFFFFF ) + 1 ) return signed_val1 , signed_val2
Implements 64bit murmur3 hash, as per ``pymmh3``. Returns a tuple.

    Args:
        key: data to hash
        seed: seed
        x64arch: is a 64-bit architecture available?

    Returns:
        tuple: tuple of integers, ``(signed_val1, signed_val2)``