def hash_factory(seed): if complex_types: if universe_size is None: fun = lambda x: hashfun(x, seed) else: fun = lambda x: hashfun(x, seed) % universe_size else: if universe_size is None: fun = lambda x: hashfun(hashable(x), seed) else: fun = lambda x: hashfun(hashable(x), seed) % universe_size return fun
def __init__(self, bit_depth=64, seed=0, hashfun_map=((64, chash64), (128, chash128))): """ :param bit_depth: Length of binary vector (bit resolution) :type bit_depth: int """ self.bits = range(bit_depth) self.seed = seed for key_bits, val_fun in hashfun_map: if bit_depth <= key_bits: self.hashfun = lambda value, seed=0: val_fun(hashable(value), seed) break else: self.hashfun = VarlenHash(bit_depth)