Example #1
0
 def aesara_hash(self):
     _, d = self
     return hash_from_ndarray(d)
Example #2
0
def test_hash_from_ndarray():
    hashes = []
    rng = np.random.rand(5, 5)

    for data in [
            -2,
            -1,
            0,
            1,
            2,
            np.zeros((1, 5)),
            np.zeros((1, 6)),
            # Data buffer empty but different shapes
            np.zeros((1, 0)),
            np.zeros((2, 0)),
            # Same data buffer and shapes but different strides
            np.arange(25).reshape(5, 5),
            np.arange(25).reshape(5, 5).T,
            # Same data buffer, shapes and strides but different dtypes
            np.zeros((5, 5), dtype="uint32"),
            np.zeros((5, 5), dtype="int32"),
            # Test slice
            rng,
            rng[1:],
            rng[:4],
            rng[1:3],
            rng[::2],
            rng[::-1],
    ]:
        data = np.asarray(data)
        hashes.append(hash_from_ndarray(data))

    assert len(set(hashes)) == len(hashes)

    # test that different type of views and their copy give the same hash
    assert hash_from_ndarray(rng[1:]) == hash_from_ndarray(rng[1:].copy())
    assert hash_from_ndarray(rng[1:3]) == hash_from_ndarray(rng[1:3].copy())
    assert hash_from_ndarray(rng[:4]) == hash_from_ndarray(rng[:4].copy())
    assert hash_from_ndarray(rng[::2]) == hash_from_ndarray(rng[::2].copy())
    assert hash_from_ndarray(rng[::-1]) == hash_from_ndarray(rng[::-1].copy())