pure python hashing, cached