Example #1
0
    def test_columns_without_local_data_and_without_key_argument(
            self, repo_20_filled_samples):
        repo = repo_20_filled_samples
        co = repo.checkout()
        from hangar.backends import backend_decoder

        # perform a mock for nonlocal data
        for k in co._columns._columns['writtenaset']._samples:
            co._columns._columns['writtenaset']._samples[k] = backend_decoder(
                b'50:daeaaeeaebv')
        col = co.columns['writtenaset']
        with pytest.raises(RuntimeError):
            HangarDataset((col, ))

        # perform a mock for nonlocal data
        co = repo.checkout()
        template = backend_decoder(b'50:daeaaeeaebv')
        co._columns._columns['writtenaset']._samples['4'] = template
        col = co.columns['writtenaset']
        dataset = HangarDataset((col, ))
        dataset_available_keys = dataset._keys
        assert len(dataset_available_keys) == 19
        assert '4' not in dataset_available_keys
        column_reported_local_keys = list(col.keys(local=True))
        for dset_avail_key in dataset_available_keys:
            assert dset_avail_key in column_reported_local_keys
        assert len(dataset_available_keys) == len(column_reported_local_keys)
        co.close()
Example #2
0
 def test_keys_not_valid(self, repo_20_filled_samples):
     co = repo_20_filled_samples.checkout()
     first_col = co.columns['writtenaset']
     keys = ['w', 'r', 'o', 'n', 'g']
     dataset = HangarDataset((first_col, ), keys=keys)
     with pytest.raises(KeyError):
         dataset.index_get(1)
     co.close()
Example #3
0
 def test_keys_multiple_column_success(self, repo_20_filled_samples):
     co = repo_20_filled_samples.checkout()
     first_col = co.columns['writtenaset']
     second_col = co.columns['second_aset']
     keys = [('1', '2'), ('2', '3'), ('3', '4')]
     dataset = HangarDataset((first_col, second_col), keys=keys)
     for i, key in enumerate(keys):
         data = dataset.index_get(i)
         assert np.allclose(data[0], first_col[key[0]])
         assert np.allclose(data[1], second_col[key[1]])
     co.close()
Example #4
0
 def test_column_without_wrapping_list(self, repo_20_filled_samples,
                                       array5by7):
     co = repo_20_filled_samples.checkout()
     first_col = co.columns['writtenaset']
     second_col = co.columns['second_aset']
     dataset = HangarDataset((first_col, second_col))
     key1, key2 = dataset._keys[0]
     assert key1 == key2
     target = array5by7[:] = int(key1)
     assert np.allclose(dataset.index_get(0), target)
     co.close()
Example #5
0
 def test_keys_single_column_success(self, repo_20_filled_samples):
     co = repo_20_filled_samples.checkout()
     first_col = co.columns['writtenaset']
     keys = ['1', '2', '3']
     dataset = HangarDataset((first_col, ), keys=keys)
     assert dataset._keys == keys
     co.close()
Example #6
0
 def test_fails_on_write_enabled_columns(self, repo_20_filled_samples):
     repo = repo_20_filled_samples
     co = repo.checkout(write=True)
     first_aset = co.columns['writtenaset']
     with pytest.raises(PermissionError):
         HangarDataset((first_aset, ))
     co.close()
Example #7
0
    def test_keys_non_local(self, repo_20_filled_samples):
        repo = repo_20_filled_samples
        co = repo.checkout()
        # perform a mock for nonlocal data
        from hangar.backends import backend_decoder
        template = backend_decoder(b'50:daeaaeeaebv')
        co._columns._columns['writtenaset']._samples['4'] = template

        col = co.columns['writtenaset']
        col_reported_remote_keys = col.remote_reference_keys
        assert col_reported_remote_keys == ('4', )
        assert len(col_reported_remote_keys) == 1
        dataset = HangarDataset((col, ), keys=('0', *col_reported_remote_keys))
        with pytest.raises(KeyError):
            # TODO: hangar internal should raise FileNotFoundError?
            dataset.index_get(1)
        co.close()
Example #8
0
 def test_columns_without_common_keys_and_without_key_argument(
         self, repo_20_filled_samples):
     co = repo_20_filled_samples.checkout(write=True)
     first_col = co.columns['writtenaset']
     first_col['AnExtraKey'] = first_col['0']
     co.commit('added an extra key')
     co.close()
     co = repo_20_filled_samples.checkout()
     first_col = co.columns['writtenaset']
     second_col = co.columns['second_aset']
     with pytest.raises(KeyError):
         HangarDataset((first_col, second_col))
     co.close()
Example #9
0
    def test_keys_nested_column_success(self, repo_20_filled_subsamples):
        co = repo_20_filled_subsamples.checkout()
        col1 = co['writtenaset']
        col2 = co['second_aset']

        dataset = HangarDataset([col1, col2])
        data = dataset.index_get(1)
        assert tuple(data[0].keys()) == tuple(data[1].keys()) == (4, 5, 6)
        assert isinstance(data[0], dict)
        assert isinstance(data[1], dict)

        keys = (((0, ...), (0, 1)), ((1, ...), (1, 4)))
        dataset = HangarDataset([col1, col2], keys=keys)
        data = dataset.index_get(1)
        assert tuple(data[0].keys()) == (4, 5, 6)
        assert np.allclose(data[1], col2[1][4])
        co.close()
Example #10
0
 def test_no_column(self):
     with pytest.raises(TypeError):
         HangarDataset([])