diff options
Diffstat (limited to 'numpy/oldnumeric/compat.py')
-rw-r--r-- | numpy/oldnumeric/compat.py | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/numpy/oldnumeric/compat.py b/numpy/oldnumeric/compat.py new file mode 100644 index 000000000..3e1d53d0e --- /dev/null +++ b/numpy/oldnumeric/compat.py @@ -0,0 +1,109 @@ +# Compatibility module containing deprecated names + +__all__ = ['NewAxis', + 'UFuncType', 'UfuncType', 'ArrayType', 'arraytype', + 'LittleEndian', 'arrayrange', 'matrixmultiply', + 'array_constructor', 'pickle_array', + 'DumpArray', 'LoadArray', 'multiarray', + # from cPickle + 'dump', 'dumps', 'load', 'loads', + 'Unpickler', 'Pickler' + ] + +import numpy.core.multiarray as multiarray +import numpy.core.umath as um +from numpy.core.numeric import array +import functions +import sys + +from cPickle import dump, dumps + +mu = multiarray + +#Use this to add a new axis to an array +#compatibility only +NewAxis = None + +#deprecated +UFuncType = type(um.sin) +UfuncType = type(um.sin) +ArrayType = mu.ndarray +arraytype = mu.ndarray + +LittleEndian = (sys.byteorder == 'little') + +from numpy import deprecate + +# backward compatibility +arrayrange = deprecate(functions.arange, 'arrayrange', 'arange') + +# deprecated names +matrixmultiply = deprecate(mu.dot, 'matrixmultiply', 'dot') + +def DumpArray(m, fp): + m.dump(fp) + +def LoadArray(fp): + import cPickle + return cPickle.load(fp) + +def array_constructor(shape, typecode, thestr, Endian=LittleEndian): + if typecode == "O": + x = array(thestr, "O") + else: + x = mu.fromstring(thestr, typecode) + x.shape = shape + if LittleEndian != Endian: + return x.byteswap(True) + else: + return x + +def pickle_array(a): + if a.dtype.hasobject: + return (array_constructor, + a.shape, a.dtype.char, a.tolist(), LittleEndian) + else: + return (array_constructor, + (a.shape, a.dtype.char, a.tostring(), LittleEndian)) + +def loads(astr): + import cPickle + arr = cPickle.loads(astr.replace('Numeric', 'numpy.oldnumeric')) + return arr + +def load(fp): + return loads(fp.read()) + +def _LoadArray(fp): + import typeconv + ln = fp.readline().split() + if ln[0][0] == 'A': ln[0] = ln[0][1:] + typecode = ln[0][0] + endian = ln[0][1] + itemsize = int(ln[0][2:]) + shape = [int(x) for x in ln[1:]] + sz = itemsize + for val in shape: + sz *= val + dstr = fp.read(sz) + m = mu.fromstring(dstr, typeconv.convtypecode(typecode)) + m.shape = shape + + if (LittleEndian and endian == 'B') or (not LittleEndian and endian == 'L'): + return m.byteswap(True) + else: + return m + +import pickle, copy +class Unpickler(pickle.Unpickler): + def load_array(self): + self.stack.append(_LoadArray(self)) + + dispatch = copy.copy(pickle.Unpickler.dispatch) + dispatch['A'] = load_array + +class Pickler(pickle.Pickler): + def __init__(self, *args, **kwds): + raise NotImplementedError, "Don't pickle new arrays with this" + def save_array(self, object): + raise NotImplementedError, "Don't pickle new arrays with this" |