def test_set(self):
     "Tests setting fields/attributes."
     [d, m, mrec, dlist, dates, ts, mts] = self.data
     mts.f0._data[:] = 5
     assert_equal(mts['f0']._data, [5,5,5,5,5])
     mts.f0 = 1
     assert_equal(mts['f0']._data, [1]*5)
     assert_equal(getmaskarray(mts['f0']), [0]*5)
     mts.f1 = MA.masked
     assert_equal(mts.f1.mask, [1]*5)
     assert_equal(getmaskarray(mts['f1']), [1]*5)
     mts._mask = MA.masked
     assert_equal(getmaskarray(mts['f1']), [1]*5)
     assert_equal(mts['f0']._mask, mts['f1']._mask)
     mts._mask = MA.nomask
     assert_equal(getmaskarray(mts['f1']), [0]*5)
     assert_equal(mts['f0']._mask, mts['f1']._mask)  
Example #2
0
 def __setattr__(self, attr, val):
     newattr = attr not in self.__dict__
     try:
         # Is attr a generic attribute ?
         ret = object.__setattr__(self, attr, val)
     except:
         # Not a generic attribute: exit if it's not a valid field
         fielddict = self.dtype.names or {}
         if attr not in fielddict:
             exctype, value = sys.exc_info()[:2]
             raise exctype, value
     else:
         if attr not in list(self.dtype.names) + ["_dates", "_mask"]:
             return ret
         if newattr:  # We just added this one
             try:  #  or this setattr worked on an internal
                 #  attribute.
                 object.__delattr__(self, attr)
             except:
                 return ret
     # Case #1.: Basic field ............
     base_fmask = self._fieldmask
     _names = self.dtype.names
     if attr in _names:
         fval = filled(val)
         mval = getmaskarray(val)
         if self._hardmask:
             mval = mask_or(mval, base_fmask.__getattr__(attr))
         self._data.__setattr__(attr, fval)
         base_fmask.__setattr__(attr, mval)
         return
     elif attr == "_mask":
         if self._hardmask:
             val = make_mask(val)
             if val is not nomask:
                 #                    mval = getmaskarray(val)
                 for k in _names:
                     m = mask_or(val, base_fmask.__getattr__(k))
                     base_fmask.__setattr__(k, m)
         else:
             mval = getmaskarray(val)
             for k in _names:
                 base_fmask.__setattr__(k, mval)
         return