def __setitem__(self, slice_, value): if is_well_formed_where(value): slice_ = fix_slice(slice_, self.shape) if len(slice_) == 1 and isinstance(slice_[0], int) and slice_ < len(self._storage[0]): self._storage[0][slice_[0]] = value else: self._storage[0].append(value)
def test_nest_wheres(self): expr1 = make_range_expr(val=-888, max=0, max_incl=False) expr2 = make_range_expr(val=111, min=0, min_incl=True, max=10, max_incl=False) expr3 = make_range_expr(val=222, max=20, max_incl=False, else_val=-999) # Tests that expressions are nested properly expr = nest_wheres(expr1, expr2, expr3) s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(x < 20, 222, -999)))' self.assertEqual(s, expr) self.assertTrue(is_nested_where(expr)) self.assertTrue(is_well_formed_nested(expr)) # Tests that invalid expressions are thrown out expr = nest_wheres('should not be included', expr1, expr2, 'where(also not included)', expr3) self.assertEqual(s, expr) self.assertTrue(is_nested_where(expr)) self.assertTrue(is_well_formed_where(expr)) self.assertTrue(is_well_formed_nested(expr)) s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(x < 20, 222, -999)])' self.assertFalse(is_well_formed_nested(s)) s = 'where(x < 0, -888, where((x >= 0) & (x < 10), 111, where(bad)))' self.assertFalse(is_well_formed_nested(s)) self.assertRaises(IndexError, nest_wheres, 'bob')
def __setitem__(self, slice_, value): if is_well_formed_where(value): slice_ = utils.fix_slice(slice_, self.shape) if len(slice_) == 1 and isinstance( slice_[0], int) and slice_ < len(self._storage[0]): self._storage[0][slice_[0]] = value else: self._storage[0].append(value)
def test_make_range_expr(self): s = 'c*10' expr = make_range_expr(10) self.assertEqual(s, expr) s = 'where(x > 99, 8, -999)' expr = make_range_expr(8, min=99, else_val=-999) self.assertEqual(s, expr) s = 'where(x >= 99, 8, -999)' expr = make_range_expr(8, min=99, min_incl=True, else_val=-999) self.assertEqual(s, expr) s = 'where(x < 10, 100, -999)' expr = make_range_expr(100, max=10, max_incl=False, else_val=-999) self.assertEqual(s, expr) s = 'where(x <= 10, 100, -999)' expr = make_range_expr(100, max=10, else_val=-999) self.assertEqual(s, expr) s = 'where((x > 0) & (x <= 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, else_val=100) self.assertEqual(s, expr) s = 'where((x >= 0) & (x <= 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, min_incl=True, else_val=100) self.assertEqual(s, expr) s = 'where((x >= 0) & (x < 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, min_incl=True, max_incl=False, else_val=100) self.assertEqual(s, expr) s = 'where((x > 0) & (x < 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, min_incl=False, max_incl=False, else_val=100) self.assertEqual(s, expr) self.assertTrue(is_well_formed_where(expr)) self.assertFalse(is_nested_where(expr)) self.assertFalse(is_well_formed_nested(expr))
def test_make_range_expr(self): s='c*10' expr = make_range_expr(10) self.assertEqual(s, expr) s = 'where(x > 99, 8, -999)' expr = make_range_expr(8, min=99, else_val=-999) self.assertEqual(s, expr) s = 'where(x >= 99, 8, -999)' expr = make_range_expr(8, min=99, min_incl=True, else_val=-999) self.assertEqual(s, expr) s = 'where(x < 10, 100, -999)' expr = make_range_expr(100, max=10, max_incl=False, else_val=-999) self.assertEqual(s, expr) s = 'where(x <= 10, 100, -999)' expr = make_range_expr(100, max=10, else_val=-999) self.assertEqual(s, expr) s = 'where((x > 0) & (x <= 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, else_val=100) self.assertEqual(s, expr) s = 'where((x >= 0) & (x <= 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, min_incl=True, else_val=100) self.assertEqual(s, expr) s = 'where((x >= 0) & (x < 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, min_incl=True, max_incl=False, else_val=100) self.assertEqual(s, expr) s = 'where((x > 0) & (x < 100), 55, 100)' expr = make_range_expr(55, min=0, max=100, min_incl=False, max_incl=False, else_val=100) self.assertEqual(s, expr) self.assertTrue(is_well_formed_where(expr)) self.assertFalse(is_nested_where(expr)) self.assertFalse(is_well_formed_nested(expr))
def is_valid_value(self, value): if not is_well_formed_where(value): raise ValueError('\value\' must be a string matching the form (may be nested): \'{0}\' ; for example, \'where(x > 99, 8, -999)\', \'where((x > 0) & (x <= 100), 55, 100)\', or \'where(x <= 10, 10, where(x <= 30, 100, where(x < 50, 150, nan)))\''.format(single_where_match))
def is_valid_value(self, value): if not is_well_formed_where(value): raise ValueError( '\'value\' must be a string matching the form (may be nested): \'{0}\' ; for example, \'where(x > 99, 8, -999)\', \'where((x > 0) & (x <= 100), 55, 100)\', or \'where(x <= 10, 10, where(x <= 30, 100, where(x < 50, 150, nan)))\'' .format(single_where_match))