def test_coords_modify(self): data = Dataset({'x': ('x', [-1, -2]), 'y': ('y', [0, 1, 2]), 'foo': (['x', 'y'], np.random.randn(2, 3))}, {'a': ('x', [4, 5]), 'b': -10}) actual = data.copy(deep=True) actual.coords['x'] = ('x', ['a', 'b']) self.assertArrayEqual(actual['x'], ['a', 'b']) actual = data.copy(deep=True) actual.coords['z'] = ('z', ['a', 'b']) self.assertArrayEqual(actual['z'], ['a', 'b']) with self.assertRaisesRegexp(ValueError, 'conflicting sizes'): data.coords['x'] = ('x', [-1]) actual = data.copy() del actual.coords['b'] expected = data.reset_coords('b', drop=True) self.assertDatasetIdentical(expected, actual) with self.assertRaises(KeyError): del data.coords['not_found'] with self.assertRaises(KeyError): del data.coords['foo']
def test_coords_set(self): one_coord = Dataset({'x': ('x', [0]), 'yy': ('x', [1]), 'zzz': ('x', [2])}) two_coords = Dataset({'zzz': ('x', [2])}, {'x': ('x', [0]), 'yy': ('x', [1])}) all_coords = Dataset(coords={'x': ('x', [0]), 'yy': ('x', [1]), 'zzz': ('x', [2])}) actual = one_coord.set_coords('x') self.assertDatasetIdentical(one_coord, actual) actual = one_coord.set_coords(['x']) self.assertDatasetIdentical(one_coord, actual) actual = one_coord.set_coords('yy') self.assertDatasetIdentical(two_coords, actual) actual = one_coord.set_coords(['yy', 'zzz']) self.assertDatasetIdentical(all_coords, actual) actual = one_coord.reset_coords() self.assertDatasetIdentical(one_coord, actual) actual = two_coords.reset_coords() self.assertDatasetIdentical(one_coord, actual) actual = all_coords.reset_coords() self.assertDatasetIdentical(one_coord, actual) actual = all_coords.reset_coords(['yy', 'zzz']) self.assertDatasetIdentical(one_coord, actual) actual = all_coords.reset_coords('zzz') self.assertDatasetIdentical(two_coords, actual) with self.assertRaisesRegexp(ValueError, 'cannot remove index'): one_coord.reset_coords('x') actual = all_coords.reset_coords('zzz', drop=True) expected = all_coords.drop_vars('zzz') self.assertDatasetIdentical(expected, actual) expected = two_coords.drop_vars('zzz') self.assertDatasetIdentical(expected, actual)