[Numpy-svn] r2968 - in trunk/numpy: lib numarray oldnumeric

numpy-svn at scipy.org numpy-svn at scipy.org
Sat Aug 5 13:00:11 EDT 2006


Author: oliphant
Date: 2006-08-05 12:00:03 -0500 (Sat, 05 Aug 2006)
New Revision: 2968

Added:
   trunk/numpy/numarray/alter_code1.py
   trunk/numpy/numarray/alter_code2.py
   trunk/numpy/oldnumeric/alter_code1.py
   trunk/numpy/oldnumeric/alter_code2.py
Removed:
   trunk/numpy/lib/convertnumericA.py
   trunk/numpy/lib/convertnumericB.py
Log:
Move converting code

Deleted: trunk/numpy/lib/convertnumericA.py
===================================================================
--- trunk/numpy/lib/convertnumericA.py	2006-08-05 08:59:42 UTC (rev 2967)
+++ trunk/numpy/lib/convertnumericA.py	2006-08-05 17:00:03 UTC (rev 2968)
@@ -1,173 +0,0 @@
-"""
-This module converts code written for Numeric to run with numpy
-
-Makes the following changes:
- * Changes import statements (warns of use of from Numeric import *)
- * Changes import statements (using numerix) ...
- * Makes search and replace changes to:
-   - .typecode()
-   - .iscontiguous()
-   - .byteswapped()
-   - .itemsize()
-   - .toscalar()
- * Converts .flat to .ravel() except for .flat = xxx or .flat[xxx]
- * Replace xxx.spacesaver() with True
- * Convert xx.savespace(?) to pass + ## xx.savespace(?)
-
- * Converts uses of 'b' to 'B' in the typecode-position of
-   functions:
-   eye, tri (in position 4)
-   ones, zeros, identity, empty, array, asarray, arange,
-   fromstring, indices, array_constructor (in position 2)
-
-   and methods:
-   astype --- only argument
-"""
-__all__ = ['fromfile', 'fromstr']
-
-import sys
-import os
-import re
-import glob
-
-
-_func4 = ['eye', 'tri']
-_meth1 = ['astype']
-_func2 = ['ones', 'zeros', 'identity', 'fromstring', 'indices',
-         'empty', 'array', 'asarray', 'arange', 'array_constructor']
-
-func_re = {}
-
-for name in _func2:
-    _astr = r"""(%s\s*[(][^,]*?[,][^'"]*?['"])b(['"][^)]*?[)])"""%name
-    func_re[name] = re.compile(_astr, re.DOTALL)
-
-for name in _func4:
-    _astr = r"""(%s\s*[(][^,]*?[,][^,]*?[,][^,]*?[,][^'"]*?['"])b(['"][^)]*?[)])"""%name
-    func_re[name] = re.compile(_astr, re.DOTALL)    
-
-for name in _meth1:
-    _astr = r"""(.%s\s*[(][^'"]*?['"])b(['"][^)]*?[)])"""%name
-    func_re[name] = re.compile(_astr, re.DOTALL)
-
-def fixtypechars(fstr):
-    for name in _func2 + _func4 + _meth1:
-        fstr = func2_re[name].sub('\\1B\\2',fstr)
-    return fstr
-
-flatindex_re = re.compile('([.]flat(\s*?[[=]))')
-
-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(".typecode()",".dtype.char")
-    astr = astr.replace(".iscontiguous()",".flags.contiguous")
-    astr = astr.replace(".byteswapped()",".byteswap()")
-    astr = astr.replace(".toscalar()", ".item()")
-    astr = astr.replace(".itemsize()",".itemsize")
-    # preserve uses of flat that should be o.k.
-    tmpstr = flatindex_re.sub(r"@@@@\2",astr)
-    # replace other uses of flat
-    tmpstr = tmpstr.replace(".flat",".ravel()")
-    # put back .flat where it was valid
-    astr = tmpstr.replace("@@@@", ".flat")
-    return astr
-
-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 = svspc2.sub('True',astr)
-    astr = svspc3.sub(r'pass  ## \1', astr)
-    #astr = shpe.sub('\\1=\\1.reshape(\\2)', astr)
-    return astr
-
-import datetime
-def fromstr(filestr):
-    filestr = fixtypechars(filestr)
-    filestr, fromall1 = changeimports(filestr, 'Numeric', 'numpy.oldnumeric')
-    filestr, fromall1 = changeimports(filestr, 'multiarray','numpy.oldnumeric')
-    filestr, fromall1 = changeimports(filestr, 'umath', 'numpy.oldnumeric')
-    filestr, fromall1 = changeimports(filestr, 'Precision', 'numpy.oldnumeric.precision')
-    filestr, fromall1 = changeimports(filestr, 'UserArray', 'numpy.oldnumeric.user_array')
-    filestr, fromall1 = changeimports(filestr, 'ArrayPrinter', 'numpy.oldnumeric.array_printer')
-    filestr, fromall2 = changeimports(filestr, 'numerix', 'numpy.oldnumeric')
-    filestr, fromall3 = changeimports(filestr, 'scipy_base', 'numpy.oldnumeric')
-    filestr, fromall3 = changeimports(filestr, 'Matrix', 'numpy.oldnumeric.matrix')    
-    filestr, fromall3 = changeimports(filestr, 'MLab', 'numpy.oldnumeric.mlab')
-    filestr, fromall3 = changeimports(filestr, 'LinearAlgebra', 'numpy.oldnumeric.linear_algebra')
-    filestr, fromall3 = changeimports(filestr, 'RNG', 'numpy.oldnumeric.rng')
-    filestr, fromall3 = changeimports(filestr, 'RNG.Statistics', 'numpy.oldnumeric.rng_stats')
-    filestr, fromall3 = changeimports(filestr, 'RandomArray', 'numpy.oldnumeric.random_array')
-    filestr, fromall3 = changeimports(filestr, 'FFT', 'numpy.oldnumeric.fft')
-    filestr, fromall3 = changeimports(filestr, 'MA', 'numpy.oldnumeric.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.oldnumeric %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.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
-    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)

Deleted: trunk/numpy/lib/convertnumericB.py
===================================================================
--- trunk/numpy/lib/convertnumericB.py	2006-08-05 08:59:42 UTC (rev 2967)
+++ trunk/numpy/lib/convertnumericB.py	2006-08-05 17:00:03 UTC (rev 2968)
@@ -1,135 +0,0 @@
-"""
-This module converts code written for numpy.oldnumeric to work
-with numpy
-
-Makes the following changes:
- * Converts typecharacters '1swu' to 'bhHI' respectively
-   when used as typecodes
- * Changes import statements
- * Change typecode= to dtype=
- * Eliminates savespace=xxx keyword arguments
- *  Removes it when keyword is not given as well
- * 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 oldnumeric.linear_algebra,
-   oldnumeric.random_array, and oldnumeric.fft
-
-"""
-#__all__ = ['fromfile', 'fromstr']
-__all__ = []
-
-import warnings
-warnings.warn("convetnumericB is not finished yet.")
-
-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.fft.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)

Added: trunk/numpy/numarray/alter_code1.py
===================================================================
--- trunk/numpy/numarray/alter_code1.py	2006-08-05 08:59:42 UTC (rev 2967)
+++ trunk/numpy/numarray/alter_code1.py	2006-08-05 17:00:03 UTC (rev 2968)
@@ -0,0 +1,173 @@
+"""
+This module converts code written for Numeric to run with numpy
+
+Makes the following changes:
+ * Changes import statements (warns of use of from Numeric import *)
+ * Changes import statements (using numerix) ...
+ * Makes search and replace changes to:
+   - .typecode()
+   - .iscontiguous()
+   - .byteswapped()
+   - .itemsize()
+   - .toscalar()
+ * Converts .flat to .ravel() except for .flat = xxx or .flat[xxx]
+ * Replace xxx.spacesaver() with True
+ * Convert xx.savespace(?) to pass + ## xx.savespace(?)
+
+ * Converts uses of 'b' to 'B' in the typecode-position of
+   functions:
+   eye, tri (in position 4)
+   ones, zeros, identity, empty, array, asarray, arange,
+   fromstring, indices, array_constructor (in position 2)
+
+   and methods:
+   astype --- only argument
+"""
+__all__ = ['fromfile', 'fromstr']
+
+import sys
+import os
+import re
+import glob
+
+
+_func4 = ['eye', 'tri']
+_meth1 = ['astype']
+_func2 = ['ones', 'zeros', 'identity', 'fromstring', 'indices',
+         'empty', 'array', 'asarray', 'arange', 'array_constructor']
+
+func_re = {}
+
+for name in _func2:
+    _astr = r"""(%s\s*[(][^,]*?[,][^'"]*?['"])b(['"][^)]*?[)])"""%name
+    func_re[name] = re.compile(_astr, re.DOTALL)
+
+for name in _func4:
+    _astr = r"""(%s\s*[(][^,]*?[,][^,]*?[,][^,]*?[,][^'"]*?['"])b(['"][^)]*?[)])"""%name
+    func_re[name] = re.compile(_astr, re.DOTALL)    
+
+for name in _meth1:
+    _astr = r"""(.%s\s*[(][^'"]*?['"])b(['"][^)]*?[)])"""%name
+    func_re[name] = re.compile(_astr, re.DOTALL)
+
+def fixtypechars(fstr):
+    for name in _func2 + _func4 + _meth1:
+        fstr = func2_re[name].sub('\\1B\\2',fstr)
+    return fstr
+
+flatindex_re = re.compile('([.]flat(\s*?[[=]))')
+
+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(".typecode()",".dtype.char")
+    astr = astr.replace(".iscontiguous()",".flags.contiguous")
+    astr = astr.replace(".byteswapped()",".byteswap()")
+    astr = astr.replace(".toscalar()", ".item()")
+    astr = astr.replace(".itemsize()",".itemsize")
+    # preserve uses of flat that should be o.k.
+    tmpstr = flatindex_re.sub(r"@@@@\2",astr)
+    # replace other uses of flat
+    tmpstr = tmpstr.replace(".flat",".ravel()")
+    # put back .flat where it was valid
+    astr = tmpstr.replace("@@@@", ".flat")
+    return astr
+
+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 = svspc2.sub('True',astr)
+    astr = svspc3.sub(r'pass  ## \1', astr)
+    #astr = shpe.sub('\\1=\\1.reshape(\\2)', astr)
+    return astr
+
+import datetime
+def fromstr(filestr):
+    filestr = fixtypechars(filestr)
+    filestr, fromall1 = changeimports(filestr, 'Numeric', 'numpy.oldnumeric')
+    filestr, fromall1 = changeimports(filestr, 'multiarray','numpy.oldnumeric')
+    filestr, fromall1 = changeimports(filestr, 'umath', 'numpy.oldnumeric')
+    filestr, fromall1 = changeimports(filestr, 'Precision', 'numpy.oldnumeric.precision')
+    filestr, fromall1 = changeimports(filestr, 'UserArray', 'numpy.oldnumeric.user_array')
+    filestr, fromall1 = changeimports(filestr, 'ArrayPrinter', 'numpy.oldnumeric.array_printer')
+    filestr, fromall2 = changeimports(filestr, 'numerix', 'numpy.oldnumeric')
+    filestr, fromall3 = changeimports(filestr, 'scipy_base', 'numpy.oldnumeric')
+    filestr, fromall3 = changeimports(filestr, 'Matrix', 'numpy.oldnumeric.matrix')    
+    filestr, fromall3 = changeimports(filestr, 'MLab', 'numpy.oldnumeric.mlab')
+    filestr, fromall3 = changeimports(filestr, 'LinearAlgebra', 'numpy.oldnumeric.linear_algebra')
+    filestr, fromall3 = changeimports(filestr, 'RNG', 'numpy.oldnumeric.rng')
+    filestr, fromall3 = changeimports(filestr, 'RNG.Statistics', 'numpy.oldnumeric.rng_stats')
+    filestr, fromall3 = changeimports(filestr, 'RandomArray', 'numpy.oldnumeric.random_array')
+    filestr, fromall3 = changeimports(filestr, 'FFT', 'numpy.oldnumeric.fft')
+    filestr, fromall3 = changeimports(filestr, 'MA', 'numpy.oldnumeric.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.oldnumeric %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.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
+    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)

Added: trunk/numpy/numarray/alter_code2.py
===================================================================
--- trunk/numpy/numarray/alter_code2.py	2006-08-05 08:59:42 UTC (rev 2967)
+++ trunk/numpy/numarray/alter_code2.py	2006-08-05 17:00:03 UTC (rev 2968)
@@ -0,0 +1,135 @@
+"""
+This module converts code written for numpy.oldnumeric to work
+with numpy
+
+Makes the following changes:
+ * Converts typecharacters '1swu' to 'bhHI' respectively
+   when used as typecodes
+ * Changes import statements
+ * Change typecode= to dtype=
+ * Eliminates savespace=xxx keyword arguments
+ *  Removes it when keyword is not given as well
+ * 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 oldnumeric.linear_algebra,
+   oldnumeric.random_array, and oldnumeric.fft
+
+"""
+#__all__ = ['fromfile', 'fromstr']
+__all__ = []
+
+import warnings
+warnings.warn("convetnumericB is not finished yet.")
+
+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.fft.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)

Added: trunk/numpy/oldnumeric/alter_code1.py
===================================================================
--- trunk/numpy/oldnumeric/alter_code1.py	2006-08-05 08:59:42 UTC (rev 2967)
+++ trunk/numpy/oldnumeric/alter_code1.py	2006-08-05 17:00:03 UTC (rev 2968)
@@ -0,0 +1,173 @@
+"""
+This module converts code written for Numeric to run with numpy
+
+Makes the following changes:
+ * Changes import statements (warns of use of from Numeric import *)
+ * Changes import statements (using numerix) ...
+ * Makes search and replace changes to:
+   - .typecode()
+   - .iscontiguous()
+   - .byteswapped()
+   - .itemsize()
+   - .toscalar()
+ * Converts .flat to .ravel() except for .flat = xxx or .flat[xxx]
+ * Replace xxx.spacesaver() with True
+ * Convert xx.savespace(?) to pass + ## xx.savespace(?)
+
+ * Converts uses of 'b' to 'B' in the typecode-position of
+   functions:
+   eye, tri (in position 4)
+   ones, zeros, identity, empty, array, asarray, arange,
+   fromstring, indices, array_constructor (in position 2)
+
+   and methods:
+   astype --- only argument
+"""
+__all__ = ['fromfile', 'fromstr']
+
+import sys
+import os
+import re
+import glob
+
+
+_func4 = ['eye', 'tri']
+_meth1 = ['astype']
+_func2 = ['ones', 'zeros', 'identity', 'fromstring', 'indices',
+         'empty', 'array', 'asarray', 'arange', 'array_constructor']
+
+func_re = {}
+
+for name in _func2:
+    _astr = r"""(%s\s*[(][^,]*?[,][^'"]*?['"])b(['"][^)]*?[)])"""%name
+    func_re[name] = re.compile(_astr, re.DOTALL)
+
+for name in _func4:
+    _astr = r"""(%s\s*[(][^,]*?[,][^,]*?[,][^,]*?[,][^'"]*?['"])b(['"][^)]*?[)])"""%name
+    func_re[name] = re.compile(_astr, re.DOTALL)    
+
+for name in _meth1:
+    _astr = r"""(.%s\s*[(][^'"]*?['"])b(['"][^)]*?[)])"""%name
+    func_re[name] = re.compile(_astr, re.DOTALL)
+
+def fixtypechars(fstr):
+    for name in _func2 + _func4 + _meth1:
+        fstr = func2_re[name].sub('\\1B\\2',fstr)
+    return fstr
+
+flatindex_re = re.compile('([.]flat(\s*?[[=]))')
+
+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(".typecode()",".dtype.char")
+    astr = astr.replace(".iscontiguous()",".flags.contiguous")
+    astr = astr.replace(".byteswapped()",".byteswap()")
+    astr = astr.replace(".toscalar()", ".item()")
+    astr = astr.replace(".itemsize()",".itemsize")
+    # preserve uses of flat that should be o.k.
+    tmpstr = flatindex_re.sub(r"@@@@\2",astr)
+    # replace other uses of flat
+    tmpstr = tmpstr.replace(".flat",".ravel()")
+    # put back .flat where it was valid
+    astr = tmpstr.replace("@@@@", ".flat")
+    return astr
+
+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 = svspc2.sub('True',astr)
+    astr = svspc3.sub(r'pass  ## \1', astr)
+    #astr = shpe.sub('\\1=\\1.reshape(\\2)', astr)
+    return astr
+
+import datetime
+def fromstr(filestr):
+    filestr = fixtypechars(filestr)
+    filestr, fromall1 = changeimports(filestr, 'Numeric', 'numpy.oldnumeric')
+    filestr, fromall1 = changeimports(filestr, 'multiarray','numpy.oldnumeric')
+    filestr, fromall1 = changeimports(filestr, 'umath', 'numpy.oldnumeric')
+    filestr, fromall1 = changeimports(filestr, 'Precision', 'numpy.oldnumeric.precision')
+    filestr, fromall1 = changeimports(filestr, 'UserArray', 'numpy.oldnumeric.user_array')
+    filestr, fromall1 = changeimports(filestr, 'ArrayPrinter', 'numpy.oldnumeric.array_printer')
+    filestr, fromall2 = changeimports(filestr, 'numerix', 'numpy.oldnumeric')
+    filestr, fromall3 = changeimports(filestr, 'scipy_base', 'numpy.oldnumeric')
+    filestr, fromall3 = changeimports(filestr, 'Matrix', 'numpy.oldnumeric.matrix')    
+    filestr, fromall3 = changeimports(filestr, 'MLab', 'numpy.oldnumeric.mlab')
+    filestr, fromall3 = changeimports(filestr, 'LinearAlgebra', 'numpy.oldnumeric.linear_algebra')
+    filestr, fromall3 = changeimports(filestr, 'RNG', 'numpy.oldnumeric.rng')
+    filestr, fromall3 = changeimports(filestr, 'RNG.Statistics', 'numpy.oldnumeric.rng_stats')
+    filestr, fromall3 = changeimports(filestr, 'RandomArray', 'numpy.oldnumeric.random_array')
+    filestr, fromall3 = changeimports(filestr, 'FFT', 'numpy.oldnumeric.fft')
+    filestr, fromall3 = changeimports(filestr, 'MA', 'numpy.oldnumeric.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.oldnumeric %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.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
+    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)

Added: trunk/numpy/oldnumeric/alter_code2.py
===================================================================
--- trunk/numpy/oldnumeric/alter_code2.py	2006-08-05 08:59:42 UTC (rev 2967)
+++ trunk/numpy/oldnumeric/alter_code2.py	2006-08-05 17:00:03 UTC (rev 2968)
@@ -0,0 +1,135 @@
+"""
+This module converts code written for numpy.oldnumeric to work
+with numpy
+
+Makes the following changes:
+ * Converts typecharacters '1swu' to 'bhHI' respectively
+   when used as typecodes
+ * Changes import statements
+ * Change typecode= to dtype=
+ * Eliminates savespace=xxx keyword arguments
+ *  Removes it when keyword is not given as well
+ * 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 oldnumeric.linear_algebra,
+   oldnumeric.random_array, and oldnumeric.fft
+
+"""
+#__all__ = ['fromfile', 'fromstr']
+__all__ = []
+
+import warnings
+warnings.warn("convetnumericB is not finished yet.")
+
+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.fft.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)




More information about the Numpy-svn mailing list