def test_setitem(self): with self.assertRaises(TypeError): self.q[0, 0] = 1 with self.assertRaises(DimensionalityError): self.q[0, 0] = 1 * self.ureg.J with self.assertRaises(DimensionalityError): self.q[0] = 1 with self.assertRaises(DimensionalityError): self.q[0] = np.ndarray([1, 2]) with self.assertRaises(DimensionalityError): self.q[0] = 1 * self.ureg.J q = self.q.copy() q[0] = 1 * self.ureg.m self.assertQuantityEqual(q, [[1, 1], [3, 4]] * self.ureg.m) q = self.q.copy() q[...] = 1 * self.ureg.m self.assertQuantityEqual(q, [[1, 1], [1, 1]] * self.ureg.m) q = self.q.copy() q[:] = 1 * self.ureg.m self.assertQuantityEqual(q, [[1, 1], [1, 1]] * self.ureg.m) # check and see that dimensionless num bers work correctly q = [0, 1, 2, 3] * self.ureg.dimensionless q[0] = 1 self.assertQuantityEqual(q, np.asarray([1, 1, 2, 3])) q[0] = self.ureg.m / self.ureg.mm self.assertQuantityEqual(q, np.asarray([1000, 1, 2, 3])) q = [0.0, 1.0, 2.0, 3.0] * self.ureg.m / self.ureg.mm q[0] = 1.0 self.assertQuantityEqual(q, [0.001, 1, 2, 3] * self.ureg.m / self.ureg.mm)
def test_setitem(self): self.assertRaises(ValueError, self.q.__setitem__, (0,0), 1) self.assertRaises(ValueError, self.q.__setitem__, (0,0), 1*self.ureg.J) self.assertRaises(ValueError, self.q.__setitem__, 0, 1) self.assertRaises(ValueError, self.q.__setitem__, 0, np.ndarray([1, 2])) self.assertRaises(ValueError, self.q.__setitem__, 0, 1*self.ureg.J) q = self.q.copy() q[0] = 1*self.ureg.m self.assertQuantityEqual(q, [[1,1],[3,4]]*self.ureg.m) q = self.q.copy() q.__setitem__(Ellipsis, 1*self.ureg.m) self.assertQuantityEqual(q, [[1,1],[1,1]]*self.ureg.m) q = self.q.copy() q[:] = 1*self.ureg.m self.assertQuantityEqual(q, [[1,1],[1,1]]*self.ureg.m) # check and see that dimensionless num bers work correctly q = [0,1,2,3]*self.ureg.dimensionless q[0] = 1 self.assertQuantityEqual(q, np.asarray([1,1,2,3])) q[0] = self.ureg.m/self.ureg.mm self.assertQuantityEqual(q, np.asarray([1000, 1,2,3])) q = [0.,1.,2.,3.] * self.ureg.m / self.ureg.mm q[0] = 1. self.assertQuantityEqual(q, [0.001,1,2,3]*self.ureg.m / self.ureg.mm)
def test_setitem(self): with pytest.raises(TypeError): self.q[0, 0] = 1 with pytest.raises(DimensionalityError): self.q[0, 0] = 1 * self.ureg.J with pytest.raises(DimensionalityError): self.q[0] = 1 with pytest.raises(DimensionalityError): self.q[0] = np.ndarray([1, 2]) with pytest.raises(DimensionalityError): self.q[0] = 1 * self.ureg.J q = self.q.copy() q[0] = 1 * self.ureg.m helpers.assert_quantity_equal(q, [[1, 1], [3, 4]] * self.ureg.m) q = self.q.copy() q[...] = 1 * self.ureg.m helpers.assert_quantity_equal(q, [[1, 1], [1, 1]] * self.ureg.m) q = self.q.copy() q[:] = 1 * self.ureg.m helpers.assert_quantity_equal(q, [[1, 1], [1, 1]] * self.ureg.m) # check and see that dimensionless num bers work correctly q = [0, 1, 2, 3] * self.ureg.dimensionless q[0] = 1 helpers.assert_quantity_equal(q, np.asarray([1, 1, 2, 3])) q[0] = self.ureg.m / self.ureg.mm helpers.assert_quantity_equal(q, np.asarray([1000, 1, 2, 3])) q = [0.0, 1.0, 2.0, 3.0] * self.ureg.m / self.ureg.mm q[0] = 1.0 helpers.assert_quantity_equal(q, [0.001, 1, 2, 3] * self.ureg.m / self.ureg.mm) # Check that this properly masks the first item without warning q = self.ureg.Quantity( np.ma.array([0.0, 1.0, 2.0, 3.0], mask=[False, True, False, False]), "m" ) with warnings.catch_warnings(record=True) as w: q[0] = np.ma.masked # Check for no warnings assert not w assert q.mask[0]