summaryrefslogtreecommitdiff
path: root/numpy/oldnumeric/compat.py
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/oldnumeric/compat.py')
-rw-r--r--numpy/oldnumeric/compat.py109
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"