[Numpy-svn] r5124 - in trunk/numpy/ma: . tests
numpy-svn at scipy.org
numpy-svn at scipy.org
Thu May 1 19:56:10 EDT 2008
Author: pierregm
Date: 2008-05-01 18:56:07 -0500 (Thu, 01 May 2008)
New Revision: 5124
Modified:
trunk/numpy/ma/core.py
trunk/numpy/ma/mrecords.py
trunk/numpy/ma/tests/test_subclassing.py
Log:
core : clean up update_from
Modified: trunk/numpy/ma/core.py
===================================================================
--- trunk/numpy/ma/core.py 2008-05-01 21:34:11 UTC (rev 5123)
+++ trunk/numpy/ma/core.py 2008-05-01 23:56:07 UTC (rev 5124)
@@ -1170,7 +1170,7 @@
# Process data............
_data = narray(data, dtype=dtype, copy=copy, subok=True, ndmin=ndmin)
_baseclass = getattr(data, '_baseclass', type(_data))
- _basedict = getattr(data, '_basedict', getattr(data, '__dict__', None))
+ _basedict = getattr(data, '_basedict', getattr(data, '__dict__', {}))
if not isinstance(data, MaskedArray) or not subok:
_data = _data.view(cls)
else:
@@ -1225,26 +1225,27 @@
#
def _update_from(self, obj):
"""Copies some attributes of obj to self.
- """
- self._hardmask = getattr(obj, '_hardmask', False)
- self._sharedmask = getattr(obj, '_sharedmask', False)
+ """
if obj is not None:
- self._baseclass = getattr(obj, '_baseclass', type(obj))
+ _baseclass = type(obj)
else:
- self._baseclass = ndarray
- self._fill_value = getattr(obj, '_fill_value', None)
+ _baseclass = ndarray
+ _basedict = getattr(obj,'_basedict',getattr(obj,'__dict__',{}))
+ _dict = dict(_fill_value=getattr(obj, '_fill_value', None),
+ _hardmask=getattr(obj, '_hardmask', False),
+ _sharedmask=getattr(obj, '_sharedmask', False),
+ _baseclass=getattr(obj,'_baseclass',_baseclass),
+ _basedict=_basedict,)
+ self.__dict__.update(_dict)
+ self.__dict__.update(_basedict)
return
#........................
def __array_finalize__(self,obj):
"""Finalizes the masked array.
"""
# Get main attributes .........
+ self._update_from(obj)
self._mask = getattr(obj, '_mask', nomask)
- self._update_from(obj)
- # Update special attributes ...
- self._basedict = getattr(obj, '_basedict', getattr(obj, '__dict__', None))
- if self._basedict is not None:
- self.__dict__.update(self._basedict)
# Finalize the mask ...........
if self._mask is not nomask:
self._mask.shape = self.shape
@@ -1305,6 +1306,7 @@
# if getmask(indx) is not nomask:
# msg = "Masked arrays must be filled before they can be used as indices!"
# raise IndexError, msg
+ dtest = ndarray.__getitem__(self, indx)
dout = ndarray.__getitem__(self.view(ndarray), indx)
m = self._mask
if not getattr(dout,'ndim', False):
Modified: trunk/numpy/ma/mrecords.py
===================================================================
--- trunk/numpy/ma/mrecords.py 2008-05-01 21:34:11 UTC (rev 5123)
+++ trunk/numpy/ma/mrecords.py 2008-05-01 23:56:07 UTC (rev 5124)
@@ -180,9 +180,8 @@
self.__dict__.update(attrdict)
# Finalize as a regular maskedarray .....
# Update special attributes ...
- self._basedict = getattr(obj, '_basedict', getattr(obj,'__dict__',None))
- if self._basedict is not None:
- self.__dict__.update(self._basedict)
+ self._basedict = getattr(obj, '_basedict', getattr(obj,'__dict__',{}))
+ self.__dict__.update(self._basedict)
return
#......................................................
def _getdata(self):
Modified: trunk/numpy/ma/tests/test_subclassing.py
===================================================================
--- trunk/numpy/ma/tests/test_subclassing.py 2008-05-01 21:34:11 UTC (rev 5123)
+++ trunk/numpy/ma/tests/test_subclassing.py 2008-05-01 23:56:07 UTC (rev 5124)
@@ -39,7 +39,7 @@
subarray = SubArray
class MSubArray(SubArray,MaskedArray):
- def __new__(cls, data, info=None, mask=nomask):
+ def __new__(cls, data, info={}, mask=nomask):
subarr = SubArray(data, info)
_data = MaskedArray.__new__(cls, data=subarr, mask=mask)
_data.info = subarr.info
More information about the Numpy-svn
mailing list