summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/lib/convertnumericA.py (renamed from numpy/lib/convertcode.py)27
-rw-r--r--numpy/lib/convertnumericB.py129
2 files changed, 132 insertions, 24 deletions
diff --git a/numpy/lib/convertcode.py b/numpy/lib/convertnumericA.py
index b9352cd43..446d81e3d 100644
--- a/numpy/lib/convertcode.py
+++ b/numpy/lib/convertnumericA.py
@@ -2,7 +2,6 @@
This module converts code written for Numeric to run with numpy
Makes the following changes:
- * Converts typecharacters
* Changes import statements (warns of use of from Numeric import *)
* Changes import statements (using numerix) ...
* Makes search and replace changes to:
@@ -10,14 +9,10 @@ Makes the following changes:
- .iscontiguous()
- .byteswapped()
- .itemsize()
+ - .toscalar()
* Converts .flat to .ravel() except for .flat = xxx or .flat[xxx]
- * Change typecode= to dtype=
- * Eliminates savespace=xxx
* Replace xxx.spacesaver() with True
* Convert xx.savespace(?) to pass + ## xx.savespace(?)
- #### -- not * Convert a.shape = ? to a.reshape(?)
- * Prints warning for use of bool, int, float, copmlex, object, and unicode
- * replaces matrixmultiply with dot
"""
__all__ = ['fromfile', 'fromstr']
@@ -28,15 +23,6 @@ import glob
flatindex_re = re.compile('([.]flat(\s*?[[=]))')
-# Not very safe. Disabled for now..
-def replacetypechars(astr):
- astr = astr.replace("'s'","'h'")
- astr = astr.replace("'b'","'B'")
- astr = astr.replace("'1'","'b'")
- astr = astr.replace("'w'","'H'")
- astr = astr.replace("'u'","'I'")
- return astr
-
def changeimports(fstr, name, newname):
importstr = 'import %s' % name
importasstr = 'import %s as ' % name
@@ -66,7 +52,6 @@ def replaceattr(astr):
astr = astr.replace(".byteswapped()",".byteswap()")
astr = astr.replace(".toscalar()", ".item()")
astr = astr.replace(".itemsize()",".itemsize")
- astr = astr.replace("matrixmultiply","dot")
# preserve uses of flat that should be o.k.
tmpstr = flatindex_re.sub(r"@@@@\2",astr)
# replace other uses of flat
@@ -75,16 +60,10 @@ def replaceattr(astr):
astr = tmpstr.replace("@@@@", ".flat")
return astr
-svspc = re.compile(r'(\S+\s*[(].+),\s*savespace\s*=.+\s*[)]')
svspc2 = re.compile(r'([^,(\s]+[.]spacesaver[(][)])')
svspc3 = re.compile(r'(\S+[.]savespace[(].*[)])')
#shpe = re.compile(r'(\S+\s*)[.]shape\s*=[^=]\s*(.+)')
def replaceother(astr):
- astr = re.sub(r'typecode\s*=', 'dtype=', astr)
- astr = astr.replace("UserArray","ndarray")
- astr = astr.replace('ArrayType', 'ndarray')
- astr = astr.replace('NewAxis', 'newaxis')
- astr = svspc.sub(r'\1)',astr)
astr = svspc2.sub('True',astr)
astr = svspc3.sub(r'pass ## \1', astr)
#astr = shpe.sub('\\1=\\1.reshape(\\2)', astr)
@@ -115,7 +94,7 @@ def fromstr(filestr):
today = datetime.date.today().strftime('%b %d, %Y')
name = os.path.split(sys.argv[0])[-1]
filestr = '## Automatically adapted for '\
- 'numpy %s by %s\n\n%s' % (today, name, filestr)
+ 'numpy.oldnumeric %s by %s\n\n%s' % (today, name, filestr)
return filestr
def makenewfile(name, filestr):
@@ -146,7 +125,7 @@ def fromargs(args):
convertfile(filename)
def convertall(direc=os.path.curdir):
- """Convert all .py files to use NumPy (from Numeric) in the directory given
+ """Convert all .py files to use numpy.oldnumeric (from Numeric) in the directory given
For each file, a backup of <usesnumeric>.py is made as
<usesnumeric>.py.orig. A new file named <usesnumeric>.py
diff --git a/numpy/lib/convertnumericB.py b/numpy/lib/convertnumericB.py
new file mode 100644
index 000000000..cd26723a3
--- /dev/null
+++ b/numpy/lib/convertnumericB.py
@@ -0,0 +1,129 @@
+"""
+This module converts code written for numpy.oldnumeric to work
+with numpy
+
+Makes the following changes:
+ * Converts typecharacters
+ * Changes import statements
+ * Change typecode= to dtype=
+ * Eliminates savespace=xxx
+ * replaces matrixmultiply with dot
+ * converts functions that don't give axis= keyword that have changed
+ * converts functions that don't give typecode= keyword that have changed
+ * converts use of capitalized type-names
+
+ * converts old function names in linalg.old, random.old, dft.old
+
+"""
+__all__ = ['fromfile', 'fromstr']
+
+import sys
+import os
+import re
+import glob
+
+# To convert typecharacters we need to
+# Not very safe. Disabled for now..
+def replacetypechars(astr):
+ astr = astr.replace("'s'","'h'")
+ astr = astr.replace("'b'","'B'")
+ astr = astr.replace("'1'","'b'")
+ astr = astr.replace("'w'","'H'")
+ astr = astr.replace("'u'","'I'")
+ return astr
+
+def changeimports(fstr, name, newname):
+ importstr = 'import %s' % name
+ importasstr = 'import %s as ' % name
+ fromstr = 'from %s import ' % name
+ fromall=0
+
+ fstr = fstr.replace(importasstr, 'import %s as ' % newname)
+ fstr = fstr.replace(importstr, 'import %s as %s' % (newname,name))
+
+ ind = 0
+ Nlen = len(fromstr)
+ Nlen2 = len("from %s import " % newname)
+ while 1:
+ found = fstr.find(fromstr,ind)
+ if (found < 0):
+ break
+ ind = found + Nlen
+ if fstr[ind] == '*':
+ continue
+ fstr = "%sfrom %s import %s" % (fstr[:found], newname, fstr[ind:])
+ ind += Nlen2 - Nlen
+ return fstr, fromall
+
+def replaceattr(astr):
+ astr = astr.replace("matrixmultiply","dot")
+ return astr
+
+def replaceother(astr):
+ astr = re.sub(r'typecode\s*=', 'dtype=', astr)
+ astr = astr.replace('ArrayType', 'ndarray')
+ astr = astr.replace('NewAxis', 'newaxis')
+ return astr
+
+import datetime
+def fromstr(filestr):
+ #filestr = replacetypechars(filestr)
+ filestr, fromall1 = changeimports(filestr, 'numpy.oldnumeric', 'numpy')
+ filestr, fromall1 = changeimports(filestr, 'numpy.core.multiarray', 'numpy')
+ filestr, fromall1 = changeimports(filestr, 'numpy.core.umath', 'numpy')
+ filestr, fromall3 = changeimports(filestr, 'LinearAlgebra',
+ 'numpy.linalg.old')
+ filestr, fromall3 = changeimports(filestr, 'RNG', 'numpy.random.oldrng')
+ filestr, fromall3 = changeimports(filestr, 'RNG.Statistics', 'numpy.random.oldrngstats')
+ filestr, fromall3 = changeimports(filestr, 'RandomArray', 'numpy.random.oldrandomarray')
+ filestr, fromall3 = changeimports(filestr, 'FFT', 'numpy.dft.old')
+ filestr, fromall3 = changeimports(filestr, 'MA', 'numpy.core.ma')
+ fromall = fromall1 or fromall2 or fromall3
+ filestr = replaceattr(filestr)
+ filestr = replaceother(filestr)
+ today = datetime.date.today().strftime('%b %d, %Y')
+ name = os.path.split(sys.argv[0])[-1]
+ filestr = '## Automatically adapted for '\
+ 'numpy %s by %s\n\n%s' % (today, name, filestr)
+ return filestr
+
+def makenewfile(name, filestr):
+ fid = file(name, 'w')
+ fid.write(filestr)
+ fid.close()
+
+def getandcopy(name):
+ fid = file(name)
+ filestr = fid.read()
+ fid.close()
+ base, ext = os.path.splitext(name)
+ makenewfile(base+'.orig', filestr)
+ return filestr
+
+def convertfile(filename):
+ """Convert the filename given from using Numeric to using NumPy
+
+ Copies the file to filename.orig and then over-writes the file
+ with the updated code
+ """
+ filestr = getandcopy(filename)
+ filestr = fromstr(filestr)
+ makenewfile(filename, filestr)
+
+def fromargs(args):
+ filename = args[1]
+ convertfile(filename)
+
+def convertall(direc=os.path.curdir):
+ """Convert all .py files to use NumPy (from Numeric) in the directory given
+
+ For each file, a backup of <usesnumeric>.py is made as
+ <usesnumeric>.py.orig. A new file named <usesnumeric>.py
+ is then written with the updated code.
+ """
+ files = glob.glob(os.path.join(direc,'*.py'))
+ for afile in files:
+ convertfile(afile)
+
+if __name__ == '__main__':
+ fromargs(sys.argv)